web-dev-qa-db-fra.com

java.lang.SecurityException: MODE_WORLD_READABLE n'est plus pris en charge

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)
22
Abdul Gaffar

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é.

30
Rakesh Yadav