com.mine.app1
を宣言した2 つのアプリケーション Application 1( ) がありSharedPreference
ます。
SharedPreferences controlinfo = getSharedPreferences("pincode", MODE_WORLD_WRITEABLE | MODE_WORLD_READABLE);
SharedPreferences.Editor editor = controlinfo.edit();
editor.putString("pincode", "dddd");
editor.commit();
com.mine.app2
アプリケーション 1 からを読み出そうとするアプリケーション 2 ( ) がありSharedPreference
ます。
ここに次のコードがあります(ボタンの onclick の下):
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");
この場合、「dddd」 (アプリケーション 1 ( ) で設定された値) の両方を取得internalPincode
しexternalPincode
ますcom.mine.app1
。
internalPincode
どちらの場合も「none」とexternalPincode
「dddd」が返されると思います。
なぜそうしないのですか?