2017-05-23 15 views
1

외부 및 이동식 저장소를 쓸 수있는 권한을 부여했습니다. 하지만 여전히 안드로이드 7의 SD 카드에 어디서나 쓸 수는 없습니다.Android 7에서 DocumentFile.createDirectory()를 사용하여 디렉토리를 만들 수 없습니다.

Intent intent = storageVolume.createAccessIntent(null); 
startActivityForResult(intent, 989); 

;

DocumentFile documentFile = DocumentFile.fromFile(dir); 
DocumentFile test = documentFile.createDirectory("test_folder"); 

테스트 == null이

+0

'dir'이란 정확히 무엇입니까? 질문을 편집하고'onActivityResult()'메소드 (case 989 처리)와'dir '이 채워지는 곳을 보여주십시오. 'createAccessIntent()'와 아무런 관계가 없으므로'RxPermissions'를 자유롭게 제거하십시오. – CommonsWare

+0

@CommonsWare에서 onActivityResult에서 결과를 처리하는 방법은 무엇입니까? 왜냐하면 지금 아무 것도하지 않기 때문이다 –

+0

** 언제든지 startActivityForResult()를 호출하면 onActivityResult()를 구현하여 결과를 얻는다. 이것이 startActivityForResult()의 핵심입니다. 귀하의 경우, onActivityResult()에서'Intent'가 주어지고,'Intent'에있는'Uri'는 저장 공간 볼륨에 대한 접근을 나타냅니다. 당신은'DocumentFile.fromTreeUri()'와 함께 그것을 사용하여 당신이 당신의 질문에서'documentFile'로 참조 할 것을 얻습니다. – CommonsWare

답변

0

안드로이드 당신이 onActivityResult에서 사용할 필요가 열린 제공 : 여기

RxPermissions.getInstance(getActivity()) 
       .request(Manifest.permission.WRITE_EXTERNAL_STORAGE) 
       .subscribe(granted -> { 
        if (!granted) return; 
        showAlternativeDirectoryChooser();//success 
       }, throwable -> { 
       }); 

폴더 생성의 코드입니다. Uri가 액세스하려는 경로와 반드시 관련이있는 것은 아닙니다. 당신은 그것을 추측 할 수 없습니다. 당신은 실제로 당신이 주어진 우리를 사용해야합니다.

DocumentFile.fromFile 또는 Uri.parse으로 전화하면 잘못된 것입니다.