【问题标题】:Permission Denial while reading content Uri of chrome images through openInputStream()通过openInputStream()读取chrome图像的内容Uri时权限被拒绝
【发布时间】:2016-09-05 06:55:28
【问题描述】:

我正在尝试使用隐式意图 ACTION_SEND 将图像从 chrome 浏览器共享到我的应用程序。

在共享搜索到的图像时,应用会收到带有如下内容 URI 的意图:content://com.android.chrome.FileProvider/images/screenshot/1457448067808912906311.jpg

使用 ContentResolveropenInputStream() 读取与内容 Uri 关联的字节,它会导致应用程序崩溃并抛出安全异常:权限拒绝

这是堆栈跟踪:

Caused by java.lang.SecurityException: Permission Denial: opening provider org.chromium.chrome.browser.util.CompatibilityFileProvider from ProcessRecord{e2de807 31401:com.theteamie.android.app/u0a784} (pid=31401, uid=10784) that is not exported from uid 10060
   at android.os.Parcel.readException(Parcel.java:1620)
   at android.os.Parcel.readException(Parcel.java:1573)
   at android.app.ActivityManagerProxy.getContentProvider(ActivityManagerNative.java:3576)
   at android.app.ActivityThread.acquireProvider(ActivityThread.java:4799)
   at android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:2018)
   at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1466)
   at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1087)
   at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:942)
   at android.content.ContentResolver.openInputStream(ContentResolver.java:662)
   at com.theteamie.android.app.activity.PostShareActivity.copyToLocalFile(PostShareActivity.java:141)
   at com.theteamie.android.app.activity.PostShareActivity.processChosenFile(PostShareActivity.java:103)
   at com.theteamie.android.app.activity.PostShareActivity.onCreate(PostShareActivity.java:72)
   at android.app.Activity.performCreate(Activity.java:6259)
   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1130)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2490)
   at android.app.ActivityThread.-wrap11(ActivityThread.java)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:148)
   at android.app.ActivityThread.main(ActivityThread.java:5443)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)

几天前我编写此功能时它曾经工作过。我从这个SO question 的答案中获得了帮助。有人可以建议现在可能导致此问题的原因吗?

【问题讨论】:

  • “几天前它曾经工作过”——只是为了确认一下,当您收到它时,您使用的是Uri,对吧?如果您已将此 Uri 保存在某处(例如数据库)并尝试稍后使用它,则此行为是预期的。
  • 是的,我正在使用从 Intent 收到的 Uri。没有将其保存在任何地方并稍后使用。
  • 即兴发挥,感觉就像 Chrome 中的一个错误。
  • 哦,好吧。希望修复很快完成:(

标签: android google-chrome android-intent inputstream android-contentresolver


【解决方案1】:

请确保您尝试从您在 Android Manifest 中设置 ACTION_SEND 的同一活动中获取图像。出现上述问题的最可能原因

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-20
    • 1970-01-01
    • 2018-10-31
    相关资源
    最近更新 更多