我想使用一个应用程序从 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();
第二个 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();
第三个应用程序从 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
...,那么结果是正确的。
有没有人有同样的经历,或者有解决办法?谢谢!