【发布时间】:2013-08-19 12:14:34
【问题描述】:
在 Android 4.3 上测试。我有两个应用程序,com.my.app.first 和 com.my.app.second。在我的活动中,我想从其他应用程序中读取首选项。我选择为我的两个应用使用相同的用户 ID:
android:sharedUserId="com.my.app"
我总是这样加载我的偏好:
prefs = getSharedPreferences("MyAppPreferences", Context.MODE_PRIVATE);
现在,在我的第二个应用程序中,我执行以下操作:
try {
Context context = createPackageContext("com.my.app.first", Context.CONTEXT_IGNORE_SECURITY);
// context.getPackageName() does indeed return "com.my.app.first"
// Note: Context.MODE_WORLD_READABLE makes no difference here!
prefs = context.getSharedPreferences("MyAppPreferences", Context.MODE_PRIVATE);
}
prefs.mFile 错误地指向/data/data/com.my.app.second/shared_prefs/MyAppPreferences.xml。
显然,对getSharedPreferences 的调用会返回当前应用的首选项,即使我使用了其他应用的上下文。我究竟做错了什么?请帮忙!
【问题讨论】:
-
在您创建 SharedPrefs 的应用程序中,您是否将模式设置为 MODE_WORLD_READABLE ?
-
不。由于使用的是相同的
sharedUserId,因此不需要它。