使用SharedPreference跨程序共享資料
阿新 • • 發佈:2018-10-31
使用場景: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應用獲取資料
注意事項:打包apk時,如果出現 INSTALL_FAILED_SHARED_USER_COMPATIBLE 錯誤提示,請確認已安裝的應用已解除安裝(未新增sharedUserId版本)。兩個應用是否在使用同一個debug—keystone簽名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); }