1

내 응용 프로그램은 카메라를 사용하여 사진을 찍어 장기간 사용할 수 있습니다.SecurityException : url에 대한 지속적인 권한 부여가 ACTION_IMAGE_CAPTURE에서 발견되지 않았습니다.

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에 완벽하게 작동합니다. 카메라에서 영구적 인 권한을 얻으려면 어떻게해야합니까?

+1

URI가 있습니다 - 왜 액세스를 유지해야합니까? – ianhanniballake

+0

@ianhanniballake 와우. 네가 옳아. 재부팅 후, 카메라로부터의 uri는 지속적인 허가없이 액세스 할 수 있습니다. 하지만 takePersistableUriPermission()을 호출하지 않으면 ACTION_GET_CONTENT에서 uri가 실패하는 이유는 무엇입니까? –

답변

3

MediaStore에 대한 액세스 URI는 저장 권한 (예 : READ_EXTERNAL_STORAGE)에 의해서만 제어되므로 저장소 권한을 계속 보유하고있는 경우 Uris에 액세스 할 수 있으므로 권한을 유지할 필요가 없습니다 모든. 등 ACTION_GET_CONTENT에 사용

URI based permissions

, ACTION_OPEN_DOCUMENT는 반환 Intent에 포함되는 FLAG_GRANT_READ_URI_PERMISSION를 통해 URI에 특별한 한 번에 액세스 할 수 있습니다.

persist permissions에 더 영구적 인 액세스 권한을 부여하는 것은 문서 URI (DocumentsContract.isDocumentUri()이 true를 반환하는 URI) 일뿐입니다.

+0

설명해 주셔서 감사합니다. 그것은 많은 도움이됩니다. –