私の問題とよく似た質問がありますが、私の問題を解決できる回答はありません。Android 6はOTGでUSBにアクセスできない
下記のAndroid 6(< 6)では、すべて正常に動作します。私はUSBディレクトリにファイルを作成できます。同じコードセットでは、Android 6では失敗します。問題は、File.canWrite()がAndroid 6のUSBディレクトリで「false」を返すことです。
ここで私が "有効" のフォルダ/ディレクトリの下に一覧表示する方法:
File rootDir = new File(Environment.getRootDirectory().toString());
List<File> folders = new ArrayList<>();
File[] files = rootDir.listFiles();
for (File file : files) {
if (isValidDirectory(file) || file.equals(mInitialRoot)) {
folders.add(file);
}
}
そして、これはisValidDirectory()メソッドでは、実行します。
private boolean isValidDirectory(File file) {
return file.isDirectory()
&& file.canWrite()
&& file.canRead()
&& file.exists();
}
は私がなぜが、ファイルがわかりません.canWrite()はアンドロイド6に "false"を返し、isValidDirectory()が "false"を返すようにします。
すでにandroid.permission.WRITE_EXTERNAL_STORAGE
が追加されています。イオンと私はすでにそれを宣言して以来、私は問題がどこにあるかわからない...
おかげさまで、ありがとうございます。
あなたは、たとえば、このコードを使用して、その許可をユーザーに依頼する必要がAndroidのバージョン> = 6.0で
「Android 6 for USBディレクトリ」にあります。そのディレクトリの正確なパスは何ですか? – greenapps
'Environment.getRootDirectory()'によってどのパスが与えられていますか? /システム?その中のディレクトリをリストするにはどんな意味がありますか? – greenapps
@greenapps実際にはこれは単なるテストであり、後でそれを変更する予定です。実際には、このコードは私が "ディレクトリピッカー"と呼んでいるディレクトリにあり、各ディレクトリでナビゲートすることができます。だから私が/ systemにいても、私はまだ各フォルダ/ディレクトリを選択することによって他のディレクトリに移動することができます、または "戻る"を選択して戻ることができます。私の問題は、私がcanWrite()を使用するとき、 "USBディレクトリ"は書き込み不可能なのでリストに表示されません...しかし、私が "USBディレクトリ"がリストに表示されているが、ファイルは書き込み不可能なので動作しません – SquareBox