4

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

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: No persistable permission grants found

我已阅读此 Getting Permission Denial Exception。它非常适合 ACTION_OPEN_DOCUMENT。如何获得相机的持久许可?

4

1 回答 1

7

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

用于ACTION_GET_CONTENT,等的基于 URI 的权限通过返回的FLAG_GRANT_READ_URI_PERMISSIONACTION_OPEN_DOCUMENT提供对 URI 的特殊一次性访问。Intent

只有文档 URI(DocumentsContract.isDocumentUri()返回 true 的那些)允许您保留权限以提供对 Uri 的更永久访问。

于 2016-07-22T23:13:16.897 回答