アプリケーションを使用して、2 つ以上のアプリケーションから同じ設定を読み取りたいです。
最初の application( ) は、共有設定にcom.ex.sp1
文字列を書き込みます。No.1
myPref
Context context = getApplicationContext();
SharedPreferences preferences = context.getSharedPreferences("myPref", Context.MODE_WORLD_READABLE);
preferences.edit().putString("name", "No.1").commit();
2 番目の application( ) は、共有設定にcom.ex.sp2
文字列を書き込みます。No.2
myPref
Context context = getApplicationContext();
SharedPreferences preferences = context.getSharedPreferences("myPref", Context.MODE_WORLD_READABLE);
preferences.edit().putString("name", "No.2").commit();
3 番目のアプリケーションは、1 と 2 から設定を取得し、アクティビティに関する文字列を表示します。
TextView myText = (TextView) findViewById(R.id.mytext);
Context sp1Context = createPackageContext("com.ex.sp1", Context.CONTEXT_IGNORE_SECURITY);
SharedPreferences preferences = sp1Context.getSharedPreferences("myPref", Context.MODE_WORLD_READABLE | Context.MODE_MULTI_PROCESS);
String sp1Text = preferences.getString("name", "Orz");
Context sp2Context = createPackageContext("com.ex.sp2", Context.CONTEXT_IGNORE_SECURITY);
preferences = sp2Context.getSharedPreferences("myPref", Context.MODE_WORLD_READABLE | Context.MODE_MULTI_PROCESS);
String sp2Text = preferences.getString("name", "Orz");
myText.setText(sp1Text + " " + sp2Text);
予期される文字列は であるはずですNo.1 No.2
が、結果はNo.1 No.1
です。
プリファレンス ファイル名をmyPref1
myPref2
... のように別の名前に変更すると、正しい結果が得られます。
どなたか同じ経験をお持ちの方、または解決策をお持ちの方はいらっしゃいますか? ありがとう!