Ich habe eine Aktivität, die den Intent Filter android.intent.action.SEND
mit Bildmime Typen hat.Vermeiden Sie SecurityException beim Zugriff auf DownloadProvider
Sobald die Benutzer Aktien das Bild (speziell aus dem Download-Manager) mit meiner Tätigkeit (UploadActivity), prüft die Aktivität, wenn der Benutzer angemeldet ist. Wenn nicht, wird es die ursprüngliche Absicht speichern (mit EXTRA_STREAM
) und senden Sie den Benutzer an die LoginActivity. Sobald dieser Benutzer angemeldet ist, wird er mit der ursprünglichen gespeicherten Absicht zu UploadActivity zurückgebracht.
Nun, auch nach dem Wiederherstellen der ursprünglichen Absicht, bekomme ich eine java.lang.SecurityException: Permission Denial: reading com.android.providers.downloads.DownloadProvider uri...
.
Ich verstehe, warum ich das bekomme. Es ist, weil ich nicht die vorübergehende Erlaubnis habe, die die ursprüngliche Absicht hatte.
Edit: LogCat
FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example/com.example.UploadActivity}: java.lang.SecurityException: Permission Denial: reading com.android.providers.downloads.DownloadProvider uri content://downloads/all_downloads/1145 from pid=16585, uid=10086 requires android.permission.ACCESS_ALL_DOWNLOADS, or grantUriPermission()
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.SecurityException: Permission Denial: reading com.android.providers.downloads.DownloadProvider uri content://downloads/all_downloads/1145 from pid=16585, uid=10086 requires android.permission.ACCESS_ALL_DOWNLOADS, or grantUriPermission()
at android.os.Parcel.readException(Parcel.java:1425)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:185)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:137)
at android.content.ContentProviderProxy.query(ContentProviderNative.java:366)
at android.content.ContentResolver.query(ContentResolver.java:372)
at android.content.ContentResolver.query(ContentResolver.java:315)
at com.example.UploadActivity.getFileFromContentUri(UploadActivity.java:304)
at com.example.UploadActivity.onCreate(UploadActivity.java:195)
at android.app.Activity.performCreate(Activity.java:5104)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
... 11 more
Bitte posten Sie alle LogCat-Fehler. Um sicher zu sein, haben Sie die INTERNET-Erlaubnis? – Sam
Der ursprüngliche Post wurde aktualisiert. Ja, ich habe die INTERNET-Erlaubnis. Es ist die einzige Erlaubnis, die ich habe. – ademers
@AWebDevDuh: Sie haben auch 'android.permission.ACCESS_ALL_DOWNLOADS' Erlaubnis hinzugefügt? –