使用场景:A应用使用SharedPreference保存了一些数据,B应用想获取这些数据
一、在A和B的manifest文件配置好sharedUserId属性,可以是任意的字符串,但是两个应用的sharedUserId属性必须一致
android:sharedUserId="com.xxx"
二、A应用保存数据
UserPreferences.setString("userbeans",mUserBeans.toString());
//UserPreferences主要方法
public static final String USER_LISTS = "userlists";
private static SharedPreferences getSharedPreferences() {
return NimUIKit.getContext()
.getSharedPreferences(USER_LISTS, Context.MODE_PRIVATE);
}
public static void setString(String key, String value) {
SharedPreferences preferences = getUserListPreferences();
SharedPreferences.Editor edit = preferences.edit();
edit.putString(key, value);
edit.commit();
}
三、B应用获取数据
Context pkgContext =null;
try {
pkgContext = createPackageContext("com.netease.nim.demo", CONTEXT_IGNORE_SECURITY);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
if(pkgContext !=null){
SharedPreferences preferences =
pkgContext.getSharedPreferences("userlists", Context.MODE_MULTI_PROCESS);
String userbeans = preferences.getString("userbeans", null);
Log.d("zhanlv",userbeans);
}
注意事项:打包apk时,如果出现
INSTALL_FAILED_SHARED_USER_COMPATIBLE 错误提示,请确认已安装的应用已卸载(未添加sharedUserId版本)。两个应用是否在使用同一个debug—keystone签名