Android Q-用户在应用设置中删除对uri的永久权限。如何再次申请许可?

时间:2019-07-16 18:28:57

标签: android storage-access-framework androidq

Android问:我使用Storage Access Framework(https://developer.android.com/guide/topics/providers/document-provider)在android中创建文件,例如,Downloads目录中的某些图像或视频。我为此使用ACTION_CREATE_DOCUMENT,之后获得了该uri的永久许可。结果,在更新应用程序并重新启动设备后,我可以从应用程序访问此文件。但是用户可以转到系统应用程序设置并删除此权限。之后,我将无法通过此Uri访问此文件(例如,我已将该Uri存储在数据库中)。但我需要向用户展示此图像/视频。我该怎么办?如何再次请求此Uri的许可? ACTION_OPEN_DOCUMENT不支持仅打开一个特定的Uri吗?

1 个答案:

答案 0 :(得分:0)

根据Scoped Storage文档:

  

具有过滤视图的应用程序始终在其特定于应用程序的目录内外都对其创建的文件具有读/写访问权限。您的应用无需声明任何存储权限即可访问这些文件。

但是我们在Android Q中存在一个问题,即无法使用原始路径访问文件(使用原始路径或原始Uri创建File()实例),因此我们必须通过contentResolver访问文件。 / p>

对于您的情况,如果您已经创建了文件Uri并将其保存到数据库中,则只需使用context.contentResolver.openOutputStream(your-uri)context.contentResolver.openInputStream(your-uri)来访问文件。