我想检查是否需要Manifest.permission.READ_EXTERNAL_STORAGE来读取给定的Uri。
这是正确处理我的应用程序的传入Intent所必需的。例如,如果我从WhatsApp与我的应用程序共享图像,而我的应用程序没有读取权限,那就没问题。我仍然可以阅读这个Uri,因为WhatsApp允许我阅读这个Uri。但是,谷歌照片将Uris作为外部存储Uri共享,并且要从中读取,我需要提示用户授予我的应用程序从外部存储读取的权限。
我知道我总是可以要求用户提供我的应用读取权限,但我希望尽可能避免这种情况。
答案 0 :(得分:1)
我不确定这是否是处理它的最佳方式,但您可以捕获SecurityException
然后请求必要的权限:
try {
getContentResolver().query(uri, ...);
} catch (SecurityException e) {
// Request storage perms here
ActivityCompat.requestPermissions(this, new String[] {
Manifest.permission.READ_EXTERNAL_STORAGE
}, REQ_READ_STORAGE_PERMISSION);
}
答案 1 :(得分:0)
if( PERMISSION_GRANTED != checkUriPermission( uri, android.os.Process.myPid(), android.os.Process.myUid(),
Intent.FLAG_GRANT_READ_URI_PERMISSION)) {
// request permission here
}