12

अपवाद केवल एंड्रॉइड 7.0 नौगेट (एमुलेटर) डिवाइसों में होता है।java.lang.SecurityException: MODE_WORLD_READABLE अब समर्थित नहीं है

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) 
+0

प्रलेखन में देखें, MODE_WORLD_READABLE को बहिष्कृत किया गया है क्योंकि यह बहुत खतरनाक है .: https://developer.android.com/reference/android/content/Context.html#MODE_WORLD_READABLE – Opiatefuchs

+4

त्रुटि इंगित करता है, 'MODE_WORLD_READABLE' है समर्थित नहीं। अपने 'getSharedPreferences()' कॉल से उस ध्वज को हटाएं, इसे 'MODE_PRIVATE' या '0' से बदल दें। – CommonsWare

+0

मेरे आवेदन में 'MODE_WORLD_READABLE' की एक बड़ी मांग है। और यह 6.0 तक ठीक काम कर रहा है लेकिन अगर मैं 'MODE_PRIVATE' का उपयोग करता हूं तो यह 7.0 –

उत्तर

21

विश्व पठनीय फ़ाइलें एक सुरक्षा दोष हो सकता है । तो एंड्रॉइड ने पहले इसे हटा दिया और फिर इसे पूरी तरह से हटा दिया। MODE_WORLD_READABLE को संस्करणों में Android M तक बहिष्कृत किया गया था। लेकिन Android N में यह अब समर्थित नहीं है और SecurityException फेंकता है। तो एक अलग मोड आज़माएं। मैंने Context.MODE_PRIVATE का उपयोग किया और यह काम किया।

+0

क्या यह ** getDefaultSharedPreferences ** पर भी लागू होता है? –

+0

विधि context.getSharedPreferences (PREF_NAME, MODE) है, मुझे getDefaultSharedPreferences() नहीं मिल रहा है। यदि यह प्राप्त किया गया है शेरपेरेंस() जो आप पूछ रहे हैं, तो उत्तर हाँ है, क्योंकि हम वरीयता का नाम और मोड (जिसे प्रश्न में पूछा गया था)। –

+0

@ आर.वाय वह ['वरीयता प्रबंधक .getDefaultSharedPreferences (संदर्भ संदर्भ)'] का संदर्भ दे रहा है (https://developer.android.com/reference/android/preference/PreferenceManager.html#getDefaultSharedPreferences (android.content.Context))। – Sufian

संबंधित मुद्दे