如何检查我们是否对 Android 具有特定文件 uri 权限?
How to check if we have a specific file uri permission on Android?
我遇到这种情况:
用户从图库中选择一张图片,而应用已获得 READ_EXTERNAL_STORAGE
授权,路径类似于 content://media/external/images...
用户离开应用程序,图像路径保存在一个包中以防用户回来。
用户撤销权限并返回应用。我尝试从包中恢复路径,但访问它会导致崩溃:
java.lang.SecurityException: *** has no access to content://media/external/images...
我可以检查该应用程序是否具有权限,但很有可能该路径首先不需要 READ_EXTERNAL_STORAGE
(也许用户没有撤销权限,也许他们从来没有允许它),并且它可以被显示。
有没有办法检查我的应用程序是否具有特定文件的权限?
我试过了,但它似乎不是它的用途,它总是 returns false:
context.checkCallingUriPermission()
您应该使用 ACTION_OPEN_DOCUMENT 让用户选择一个文件。
然后在 onActivityResult() 中获取可持久化的 uri 权限。
之后您可以将 data.getData().toString() 保存到共享首选项并在应用重启后重复使用。
这一切都与读取外部存储权限无关。
您还可以请求 Android OS 获取您的应用程序的持久化列表。
我遇到这种情况:
用户从图库中选择一张图片,而应用已获得
READ_EXTERNAL_STORAGE
授权,路径类似于content://media/external/images...
用户离开应用程序,图像路径保存在一个包中以防用户回来。
用户撤销权限并返回应用。我尝试从包中恢复路径,但访问它会导致崩溃:
java.lang.SecurityException: *** has no access to content://media/external/images...
我可以检查该应用程序是否具有权限,但很有可能该路径首先不需要 READ_EXTERNAL_STORAGE
(也许用户没有撤销权限,也许他们从来没有允许它),并且它可以被显示。
有没有办法检查我的应用程序是否具有特定文件的权限?
我试过了,但它似乎不是它的用途,它总是 returns false:
context.checkCallingUriPermission()
您应该使用 ACTION_OPEN_DOCUMENT 让用户选择一个文件。
然后在 onActivityResult() 中获取可持久化的 uri 权限。
之后您可以将 data.getData().toString() 保存到共享首选项并在应用重启后重复使用。
这一切都与读取外部存储权限无关。
您还可以请求 Android OS 获取您的应用程序的持久化列表。