权限拒绝在应用重启时访问图片 URI

Permission Denial accessing picture URI on app restart

如果没有偶尔的拉毛经验就不会是 android 编程...

目前正在使用模拟器...

这显然是一个新功能:

Permission Denial: opening provider com.google.android.apps.photos.contentprovider.impl.MediaContentProvider from ProcessRecord{6ebfe9e 22355:xxx/u0a140} (pid=22355, uid=10140) that is not exported from UID 10068

在所有情况下都已授予对 EXTERNAL_STORAGE 的访问权限。

场景:

  1. 用户选择图片(使用ACTION_GET_CONTENT)和activity 结果很好,图片显示在我的应用程序上下文中。
  2. 图片的 URI 保存在应用程序数据库中。
  3. 应用程序重新启动。
  4. 尝试访问same URI,得到上面的Permission Denial 异常。

然后尝试 takePersistableUriPermission 原始图片选择 activity 结果并引发异常,表明没有持久权限。

编辑:好的,我已经实现了接受的答案(但只是使用 OPEN_DOCUMENT)并且不再尝试将生成的 URI 投射到媒体路径中。因此,为了忏悔,我再次声明:

I will never attempt to translate a URI into a Media Store path.

(尽管 GET_CONTENT 和投影曾经有效 - 好吧,我情不自禁。)

确实。

通过 ACTION_GET_CONTENT 获取的 Uries 仅在您的应用程序运行时有效。

如果你想持久化以 ACTION_OPEN_DOCUMENT_TREE 开头的 uri,然后在 onActivityResult 中使获得的权限持久化。

看看 takePersistabkeUriPermission()。

(或类似的东西)。

您不需要外部存储权限等。