SecurityException:没有从ACTION_IMAGE_CAPTURE为uri找到可持久的权限授予

时间:2016-07-22 19:21:44

标签: java android android-camera android-permissions android-securityexception

我的应用使用相机拍照并长期使用。

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:找不到可持久的权限授予

我读过这个 Getting Permission Denial Exception。 它适用于ACTION_OPEN_DOCUMENT。 如何获得Camera的持久许可?

1 个答案:

答案 0 :(得分:5)

MediaStore URI的访问权限仅受存储权限(即READ_EXTERNAL_STORAGE)控制,因此只要您继续保留存储权限,就可以访问Uris,因此在这种情况下,您不能根本不需要保留权限。

ACTION_GET_CONTENTACTION_OPEN_DOCUMENT等中使用的

URI based permissions通过返回的Intent中包含的FLAG_GRANT_READ_URI_PERMISSION提供对URI的特殊一次访问权限

只有文档URI(DocumentsContract.isDocumentUri()返回true的那些URI)允许您persist permissions更永久地访问Uri。