循环获取多个application的SharedPreferences
public static final String PREFS_NAME = "AndroidSSO";
public String getToken(){
Context otherAppsContext = null;
SharedPreferences sharedPreferences = null;
String token = "";
for(int i = arrPackage.size() - 1;i > -1;i--){
String pname = arrPackage.get(i);
try {
otherAppsContext = context.createPackageContext(pname, Context.CONTEXT_IGNORE_SECURITY);
} catch (NameNotFoundException e) {
Log.e("createPackageContext", e.toString());
}
sharedPreferences = otherAppsContext.getSharedPreferences(PREFS_NAME, Context.MODE_MULTI_PROCESS);
token = sharedPreferences.getString(KEY_NAME, "");
sharedPreferences = null;
otherAppsContext = null;
if(token != null && !"".equals(token)){
break;
}
}
return token;
}
在一个context里获取的PREFS_NAME相同的sharedPreference始终是第一次获取的实例
如果要想不一样,只有PREFS_NAME不相同,比如使用package name 作为preference 的name