我的应用程序使用相机拍照并长期使用。
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Uri resultUri = null;
resultUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
new ContentValues());
imageCaptureIntent.putExtra(MediaStore.EXTRA_OUTPUT, resultUri);
startActivityForResult(imageCaptureIntent, IMAGE_CAPTURE_REQUEST_CODE);
但是当我调用takePersistableUriPermission()时,我会得到SecurityException:找不到的持久权限授予
我读过这个获取拒绝权限异常。它非常适合ACTION_OPEN_DOCUMENT。如何从Camera获得持久权限?
对MediaStore
URI的访问仅受存储权限(即READ_EXTERNAL_storage)控制,因此只要您继续持有存储权限,就可以访问这些URI,因此在这种情况下根本不需要保留权限。
在ACTION_GET_CONTENT
、ACTION_OPEN_DOCUMENT
等中使用的基于URI的权限通过返回的Intent
中包含的FLAG_GRANT_READ_URI_PERMISSION对URI进行特殊的一次性访问。
只有文档Uri(DocumentsContract.isDocumentUri()返回true的Uri)允许您保留权限,以便对Uri进行更永久的访问。