L'exception se produit uniquement dans les appareils Android 7.0 Nougat (émulateur).
Java.lang.SecurityException: MODE_WORLD_READABLE n'est plus pris en charge
Mon code:
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)
Les fichiers lisibles par tous peuvent être une faille de sécurité. Donc Android l'a d'abord déprécié puis complètement supprimé. MODE_WORLD_READABLE
était obsolète dans les versions jusqu'au Android M
. Mais en Android N
il n'est plus supporté et lance SecurityException
. Essayez donc un mode différent. J'ai utilisé Context.MODE_PRIVATE
et ça a marché.