我有 2 个应用程序 Application 1 ( com.mine.app1
),我在其中声明了一个SharedPreference
.
SharedPreferences controlinfo = getSharedPreferences("pincode", MODE_WORLD_WRITEABLE | MODE_WORLD_READABLE);
SharedPreferences.Editor editor = controlinfo.edit();
editor.putString("pincode", "dddd");
editor.commit();
我有一个应用程序 2 ( com.mine.app2
),我在其中尝试SharedPreference
从应用程序 1 中读出。
在这里,我有以下代码(在单击按钮下):
Context con = createPackageContext("com.mine.app1", 0);
SharedPreferences interalPref = getSharedPreferences("pincode", MODE_PRIVATE); //shared pref of App 2 (this app)
SharedPreferences externalPref = con.getSharedPreferences("pincode", MODE_PRIVATE); //shared pref of App 1
//note: MODE_PRIVATE doesn't matter
String internalPincode = interalPref.getString("pincode", "none");
String externalPincode = externalPref.getString("pincode", "none");
internalPincode
在这种情况下,我得到externalPincode
“无”。
但是,当我更改顺序时getSharedPreference
:
Context con = createPackageContext("com.mine.app1", 0);
SharedPreferences externalPref = con.getSharedPreferences("pincode", MODE_PRIVATE); //shared pref of App 1
SharedPreferences interalPref = getSharedPreferences("pincode", MODE_PRIVATE); //shared pref of App 2 (this app)
String internalPincode = interalPref.getString("pincode", "none");
String externalPincode = externalPref.getString("pincode", "none");
在这种情况下,我得到了两者internalPincode
和externalPincode
“dddd”(这是应用程序 1 ( com.mine.app1
) 中设置的值)
我希望在这两种情况下internalPincode
都会返回“none”和externalPincode
“dddd”。
为什么不呢?