我有一个活动,意图过滤器android.intent.action.SEND
与图片MIME类型。访问DownloadProvider时避免SecurityException
一旦用户共享照片(专门从下载管理器)与我的活动(UploadActivity),活动将检查用户是否登录。如果不是,它将存储原意(与EXTRA_STREAM
)并将用户发送到LoginActivity。一旦该用户登录,他将以原始保存的意图被带回到UploadActivity。
现在,即使恢复原来的意图后,我得到一个java.lang.SecurityException: Permission Denial: reading com.android.providers.downloads.DownloadProvider uri...
。
我明白为什么我会得到这个。这是因为我没有原始意图的临时许可。
编辑: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
请发布所有的LogCat错误。可以肯定的是,你有'INTERNET'权限吗? – Sam 2013-03-05 17:40:41
原始帖子已更新。是的,我拥有“INTERNET”权限。这是我拥有的唯一权限。 – ademers 2013-03-05 17:51:00
@AWebDevDuh:你还添加了'android.permission.ACCESS_ALL_DOWNLOADS'权限? – 2013-03-05 17:52:22