1. 程式人生 > >使用SharedPreference跨程序共享資料

使用SharedPreference跨程序共享資料

使用場景: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簽名