ich diese als meine Berechtigungen:Permission Verweigerung von MediaDocumentsProvider
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_DOCUMENTS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Ich erhalte eine Erlaubnis Leugnung Fehler hier auf der openInputStream Linie:
if(bgUri != null && !bgUri.isEmpty()) {
try {
InputStream inputStream = context.getContentResolver().openInputStream(Uri.parse(bgUri)); // <-- error
return Drawable.createFromStream(inputStream, bgUri);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
ich zum ersten Mal mit
mein Bild ladendann speichern Sie das Bild uri:
String backgroundURI = imageUri.toString();
int backgroundID = 0;
mStore.backgroundImageURI = backgroundURI;
mStore.backgroundImageNumber= backgroundID;
mStore.save();
Stapelüberwachung:
﹕ FATAL EXCEPTION: main
Process: com.myapp.pocketandroid, PID: 1284
java.lang.RuntimeException: Unable to resume activity {com.myapp.pocketandroid/com.myapp.pocketandroid.MainActivity}: java.lang.SecurityException: Permission Denial: opening provider com.android.providers.media.MediaDocumentsProvider from ProcessRecord{52946004 1284:com.myapp.pocketandroid/u0a60} (pid=1284, uid=10060) requires android.permission.MANAGE_DOCUMENTS or android.permission.MANAGE_DOCUMENTS
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2774)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2803)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2238)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.SecurityException: Permission Denial: opening provider com.android.providers.media.MediaDocumentsProvider from ProcessRecord{52946004 1284:com.myapp.pocketandroid/u0a60} (pid=1284, uid=10060) requires android.permission.MANAGE_DOCUMENTS or android.permission.MANAGE_DOCUMENTS
at android.os.Parcel.readException(Parcel.java:1465)
at android.os.Parcel.readException(Parcel.java:1419)
at android.app.ActivityManagerProxy.getContentProvider(ActivityManagerNative.java:2848)
at android.app.ActivityThread.acquireProvider(ActivityThread.java:4399)
at android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:2208)
at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1425)
at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1047)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:904)
at android.content.ContentResolver.openInputStream(ContentResolver.java:629)
at com.myapp.pocketandroid.Utils.BackgroundImageManager.background(BackgroundImageManager.java:29)
at com.myapp.pocketandroid.BaseActivity.setBackground(BaseActivity.java:83)
at com.myapp.pocketandroid.BaseActivity.onResume(BaseActivity.java:44)
Warum erhalte ich die MediaDocumentsProvider
Erlaubnis Absturz, wenn ich meine Tätigkeit wieder aufnehmen und versuchen, den URI zu laden? Ich dachte, wenn ich die Erlaubnis nehme, behalte ich die Erlaubnis für immer.
Geben Sie Ihren Code ein, der "versucht, den URI zu laden", zusammen mit dem vollständigen Stack-Trace. – CommonsWare
@CommonsWare der Absturz ist im ersten Codeblock. Ich habe einen Stack-Trace hinzugefügt. – quantumpotato
Was tun Sie zwischen dem Aufruf von 'takePersistableUriPermission()' und 'openInputStream()'? Du hast geschrieben, dass du diesen Absturz bekommst, wenn du "deine Aktivität" fortsetzt. Meinst du das wörtlich (d. H. Es ist die gleiche Aktivitätsinstanz, die du mit 'takePersistableUriPermission()' benutzt hast und gerade wieder in den Vordergrund rückt)? Oder meinst du etwas anderes? – CommonsWare