У меня есть 2 приложения Приложение 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
"none".
Однако, когда я меняю порядок 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" в обоих случаях.
Почему это не так?