l33*_*33t 6 android sharedpreferences
在Android 4.3上测试过.我有两个应用程序,com.my.app.first和com.my.app.second.在我的活动中,我想阅读其他应用程序的首选项.我选择为我的两个应用使用相同的用户ID:
android:sharedUserId="com.my.app"
我总是这样加载我的偏好:
prefs = getSharedPreferences("MyAppPreferences", Context.MODE_PRIVATE);
Run Code Online (Sandbox Code Playgroud)
现在,在我的第二个应用中,我执行以下操作:
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);
}
Run Code Online (Sandbox Code Playgroud)
prefs.mFile错误地指向/data/data/com.my.app.second/shared_prefs/MyAppPreferences.xml.
显然,即使我使用了其他应用程序的上下文,对getSharedPreferences的调用也会返回当前应用程序的首选项.我究竟做错了什么?请帮忙!
发现问题了!这看起来确实像是getSharedPreferencesAPI 中的一个错误。事实证明,先前的调用getSharedPreferences导致另一个context.getSharedPreferences()调用返回前一个实例 - 当前应用程序的首选项。
解决方案是确保在读取其他应用程序的首选项之前不会调用getSharedPreferences()它。
| 归档时间: |
|
| 查看次数: |
6179 次 |
| 最近记录: |