我有两个应用程序,App1和App2。我想在App1中使用共享首选项和App2中的访问来保存数据,反之亦然。 我能够在App1中保存数据并在App2中访问,但不能相反。
这就是我现在正在做的事情:
在清单中:
android:sharedUserId="any string"
android:sharedUserLabel="@string/any_string"
在App1中:
SharedPreferences prefs = getSharedPreferences("demopref",Context.MODE_PRIVATE);
SharedPreferences.Editor editor =prefs.edit();
editor.putString("demostring", strShareValue);
editor.commit();
在App2中:
try {
con = createPackageContext("com.sharedpref1", 0);
SharedPreferences pref = con.getSharedPreferences("demopref", Context.MODE_PRIVATE);
String your_data =
pref.getString("demostring", "No Value");
}
catch (NameNotFoundException e) {
Log.e("Not data shared", e.toString());
}
伙计们有什么线索?
答案 0 :(得分:1)
将数据写入共享首选项时,使用edit.apply()而不是edit.commit(),因为edit.apply会立即更新首选项对象并异步保存新值,因此允许您读取最新值
使用此代码:
在清单中:
android:sharedUserId="any string"
android:sharedUserLabel="@string/any_string"
在App1中:
SharedPreferences prefs = getSharedPreferences("demopref",Context.MODE_PRIVATE);
SharedPreferences.Editor editor =prefs.edit();
editor.putString("demostring", strShareValue);
editor.apply();
在App2中:
try {
con = createPackageContext("com.sharedpref1", 0);
SharedPreferences pref = con.getSharedPreferences("demopref", Context.MODE_PRIVATE);
String your_data =
pref.getString("demostring", "No Value");
}
catch (NameNotFoundException e) {
Log.e("Not data shared", e.toString());
}
答案 1 :(得分:0)
用户CONTEXT_IGNORE_SECURITY和MODE_WORLD_WRITEABLE,用于访问两个应用之间的共享数据