我正在尝试使用以下代码访问其他应用程序的共享首选项:
final ArrayList<HashMap<String,String>> LIST = new ArrayList<HashMap<String,String>>();
@SuppressWarnings("deprecation")
Context myContext = null;
try {
myContext = createPackageContext("owning app's pkg name",
Context.CONTEXT_IGNORE_SECURITY);
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} // where com.example is the owning app containing the preferences
@SuppressWarnings("deprecation")
SharedPreferences testPrefs = myContext.getSharedPreferences
("file", Context.CONTEXT_IGNORE_SECURITY);
Map<String, ?> items = testPrefs .getAll();
System.out.println(items.size());
for(String s : items.keySet())
{
//do somthing like String value= items.get(s).toString());
System.out.println(items.get(s).toString());
}
但是我的大小为地图“items”的0。这是堆栈跟踪:
12-04 12:24:13.659: W/SharedPreferencesImpl(22768): Attempt to read preferences file /data/data/owning app's pkg name/shared_prefs/filename.xml without permission
12-04 12:24:13.659: I/System.out(22768): 0
表示拥有的应用不支持共享。有什么办法可以解决这个问题吗?
答案 0 :(得分:0)
拥有应用程序需要具有WORLD_READABLE模式权限。 此外,您必须在两个应用程序的清单文件中添加相同的android:sharedUserId。