【发布时间】:2016-12-31 10:56:13
【问题描述】:
该异常仅发生在 Android 7.0 Nougat(模拟器)设备中。
java.lang.SecurityException:不再支持 MODE_WORLD_READABLE
我的代码:
public void SessionMaintainence(Context context) {
this.context = context;
preferences = context.getSharedPreferences(PREF_NAME, Context.MODE_WORLD_READABLE);
editor = preferences.edit();
editor.commit();
}
LogCat:
> E/AndroidRuntime: FATAL EXCEPTION: main
> Process: burpp.av.feedback, PID: 2796
> java.lang.RuntimeException: Unable to create application
> burpp.av.feedback.FeedbackApplication: java.lang.SecurityException:
> MODE_WORLD_READABLE no longer supported
> at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5364)
> at android.app.ActivityThread.-wrap2(ActivityThread.java)
> at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1528)
> at android.os.Handler.dispatchMessage(Handler.java:102)
> at android.os.Looper.loop(Looper.java:154)
> at android.app.ActivityThread.main(ActivityThread.java:6077)
> at java.lang.reflect.Method.invoke(Native Method)
> at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
> at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
> Caused by: java.lang.SecurityException: MODE_WORLD_READABLE no longer supported
> at android.app.ContextImpl.checkMode(ContextImpl.java:2162)
> at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:363)
> at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:358)
> at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:164)
> at burpp.av.feedback.support.SessionMaintainence.<init>(SessionMaintainence.java:63)
> at burpp.av.feedback.FeedbackApplication.onCreate(FeedbackApplication.java:43)
> at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1024)
【问题讨论】:
-
查看文档,MODE_WORLD_READABLE 已被弃用,因为它太危险了。:developer.android.com/reference/android/content/…
-
如错误所示,不支持
MODE_WORLD_READABLE。从您的getSharedPreferences()调用中删除该标志,将其替换为MODE_PRIVATE或0。 -
我的应用程序对“MODE_WORLD_READABLE”的需求很大。直到 6.0 都可以正常工作,但不能与 7.0 一起使用
-
如果我使用
MODE_PRIVATE那么我无法将一些数据共享给其他应用程序。如果我使用MODE_WORLD_READABLE,它确实允许共享一些数据,但它并不安全。那么在这种情况下我该怎么办。 -
如果我想在另一个应用程序中访问共享偏好值怎么办?你有什么解决办法吗?
标签: android android-sharedpreferences android-7.0-nougat android-securityexception