2017-05-23 37 views
1

私は外部ストレージとリムーバブルストレージの書き込みを許可しました。しかし、私はまだAndroid 7でDocumentFile.createDirectory()を使用してディレクトリを作成できません

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

アンドロイド7にSDカード上のどこにでも書き込むことはできません。ここで

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

は、フォルダ作成のコードです:

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

テスト== nullの

+0

「dir」とは何ですか?あなたの質問を編集し、 'onActivityResult()'メソッド(ケース989を扱うため)と 'dir'がどこに移入されるのかを表示してください。 'RxPermissions'は' createAccessIntent() 'とは関係がないので、自由に削除してください。 – CommonsWare

+0

@CommonsWareは、onActivityResultで結果をどのように処理する必要がありますか?今私は何もしません –

+0

** 'startActivityForResult()'を呼び出すときはいつでも、結果を得るために 'onActivityResult()'を実装します。これが 'startActivityForResult()'のポイントです。あなたのケースでは、 'onActivityResult()'では 'Intent'が与えられ、' Intent'の 'Uri'はストレージボリュームへのアクセスを表します。 'DocumentFile.fromTreeUri()'でそれを使用して、あなたの質問で 'documentFile'と呼ぶものを取得します。 – CommonsWare

答えて

0

Androidのは、あなたがonActivityResultで使用する必要がウリを提供します。 Uriはアクセスしようとしているパスに必ずしも関連しているわけではありません。あなたはそれを推測することはできません。あなたは与えられたウリを実際に使用しなければなりません。

DocumentFile.fromFileまたはUri.parseに電話すると間違っています。

関連する問題