私のアプリケーションのユーザーに内部電話機のメモリまたはSDカードに保存する選択肢を与えたい。SDカードに書き込むAndroid
内部::内容:/com.android.externalstorage.documents/tree/primary%3A
SD:私は、ユーザーの選択肢からFile
を作成する場合は、URI(ファイル名なし)がのようなものです内容:/com.android.externalstorage.documents/tree/760E-F734%3A
しかし、私は次のコードを使用してこれらのディレクトリにファイルを書き込むしようとした場合、私はエラーを取得java.io.IOException: No such file or directory
:
File writePath = new File("content:/com.android.externalstorage.documents/tree/primary%3A")
File file = new File(writePath, fileName);
try {
file.createNewFile();
} catch (IOException e) {
Log.e("saveSurvey", "Failed to create file!" + e.getMessage());
return false;
}
を
ファイルはどこかに書かれています
内容:このよう/com.android.externalstorage.documents/tree/primary%3A/ [私のファイル名]
私はマニフェストにWRITE_EXTERNAL_STORAGE
許可を宣言しているので、私はそうではないと思います権限の問題が発生しますが、無効なパスの問題が発生します。
これらが有効なファイルパスでない場合は、SDカードに書き込む方法を教えてください。 Environment.getExternalStorageDirectory()
を使用すると、常にデバイスの内部ストレージ( '/ storage/emulated/0')に書き込まれます。
で許可を要求しなければならない上記のファイルを作成するときは、二つの概念を混合さ
Environment.getExternalStorageDirectory()
writePath
としてを使用してみてください'file' URIが必要です。https://developer.android.com/reference/java/io/File.htmlの詳細情報' Environment.getExternalStorageDirectory() 'から返されたパスが正しい場合、AVDは通常、外部ファイルをエミュレートしますこのパスに保存し、SDカードと外部ストレージを混同しないでください。https://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory() –@AlbertoMéndez情報をありがとう。 「外部」ストレージはSDカードかマウント可能なデバイスメモリのどちらでもかまいませんが、デバイスメモリではなくSDカードに書き込むにはどうすればよいですか? – petehallw