내가 의도를 호출하고있어 SD 카드의 루트 권한을 부여 후 DocumentFile에 파일을 쓸 수있는 하위 폴더에 어떤 권한이 없습니다 : 다음 계속 발생 권한을 가지고이 사용
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
startActivityForResult(intent, 42);
을 내, 외부 SD 카드의 루트를 선택 이 사용 : 나는 루트에의 OutputStream (내 초기 선택)을 사용하여 파일을 쓸 수 있지만, 내가 다시 그들에게 허가를 요청하지 않는 한 내가 다른 하위 폴더에 쓸 수 및 명시 적으로 선택
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 42) {
Uri treeUri = data.getData();
this.getContentResolver().takePersistableUriPermission(treeUri, (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION));
}
}
.
권한이있는 폴더를 결정하기 위해 현재 아무 것도하지 않고 있습니다. 단지 POC를 만들고 선택한 폴더의 하위 폴더에 파일을 쓰려고합니다. 나는이를 사용하여 아래의 대상 변수에 대한 DocumentFile 객체에 널 예외가 : 내가 명시 적으로 하위 폴더에 권한을 부여하는 경우
DocumentFile dir = DocumentFile.fromTreeUri(cont, Uri.parse(myUriToRoot+"/subfolder"));
DocumentFile destination = dir.createFile("image/jpeg", "myfile.jpg");
다시 말하지만, 그것은 작동합니다. 내가 읽은 모든 것은 기존의 모든 하위 폴더와 사용 권한을 부여한 폴더 아래에 새로 생성 된 모든 폴더가 파일을 쓸 수있는 액세스 권한을 허용해야하지만 실제로는 작동하지 않는다고 말합니다.
무엇이 누락 되었습니까?
TIA
편집 : 나는 또한 내 URI에 슬래시의 URL 인코딩 문자를 사용하여 시도하고 내 의도와 다른 통화로 직접 하위 폴더를 선택하지 않으면 여전히 작동하지 않습니다.