java.lang.SecurityException: MODE_WORLD_READABLE no longer supported
39,383
World-readable files can be a security flaw. So android first deprecated it and then completely removed it. MODE_WORLD_READABLE
was deprecated in versions till Android M
. But in Android N
it is no longer supported and throws SecurityException
. So try a different mode. I used Context.MODE_PRIVATE
and it worked.
Related videos on Youtube
Author by
Abdul Gaffar
Passionate Open-Source Full-Stack Developer. Loves Microservices.
Updated on July 02, 2020Comments
-
Abdul Gaffar almost 4 years
The exception only occurs in Android 7.0 Nougat (emulator) devices.
java.lang.SecurityException: MODE_WORLD_READABLE no longer supported
My 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)
-
Opiatefuchs almost 8 yearslook into the documentation, MODE_WORLD_READABLE is deprecated because it´s too dangerous.: developer.android.com/reference/android/content/…
-
CommonsWare almost 8 yearsAs the error indicates,
MODE_WORLD_READABLE
is not supported. Remove that flag from yourgetSharedPreferences()
call, replacing it withMODE_PRIVATE
or0
. -
Abdul Gaffar almost 8 yearsThere is a huge demand of 'MODE_WORLD_READABLE' in my application. And its been working fine till 6.0 but its not working with 7.0
-
Abdul Gaffar almost 8 yearsif i use
MODE_PRIVATE
then i cant able to share some datas to other application. and if i useMODE_WORLD_READABLE
it does allows to share some datas but it is not secured. So what should i do in this case. -
Anand Savjani over 5 yearsWhat if I want to access shared preference value in another app? Have you any find out any solution for it?
-
-
IgorGanapolsky over 7 yearsIs this also applicable to getDefaultSharedPreferences?
-
Rakesh Yadav over 7 yearsthe method is context.getSharedPreferences(PREF_NAME, MODE), I don't find getDefaultSharedPreferences(). If it is getSharedPreferences() what you are asking for, then the answer is yes, because we preference name and MODE (which was asked in the question).
-
Sufian over 7 years@R.Y he's referring to
PreferenceManager.getDefaultSharedPreferences(Context context)
. -
Sufian over 7 years@IgorGanapolsky I think default prefs use private mode. You will either have to check the AOSP source code or maybe someone has already asked it on the internet. Anyway, since the SharedPreference is created by the framework itself, we can assume that this exception will not occur with
getDefaultSharedPreferences()
. -
Samuel Owino about 6 yearsContext.MODE_PRIVATE has worked for me too. thanks @RakeshYadav
-
Rajesh Nasit about 6 years@IgorGanapolsky yes