リムーバブルSDカードにファイルとディレクトリを作成する必要があるアプリがあります。DocumentFile APIを使用します。ほとんどの場合、それは機能します:)しかし、機能しないケースが1つ見つかりました(少なくともSamsung GS7では):
" REM " (引用符なし)という名前のディレクトリを作成できません。
テスト ケース : ディレクトリ "/storage/9C33-6BBD/Xxxx" で作業しています。ディレクトリ "REM" を作成したい
DocumentFile parentDf;
// init of parentDf to point to /storage/9C33-6BBD/Xxxx
DocumentFile remDf = df.createDirectory("R.E.M.");
if(remDf == null)
displayMessage("failure");
else
displayMessage("success");
これで「成功」と表示されるので嬉しいです。後で、このディレクトリにファイルを作成したいと思います:「REM/myfile」。
DocumentFile parentDf;
// init of parentDf to point to /storage/9C33-6BBD/Xxxx
DocumentFile remDf = parentDf.findFile("R.E.M.");
if(remDf == null) {
displayMessage("failure : R.E.M. doesn't exists");
return false;
}
DocumentFile myfileDf = remDf.createFile("text/plain","myfile");
if(remDf == null)
displayMessage("failure");
else
displayMessage("success");
これにより、「失敗: REM が存在しません」と表示されます。
だから私は DocumentFile.listFiles でファイルを一覧表示し、次のように表示します: "REM" (最後の DOT が消えました! )
もしそうなら(new File("/storage/9C33-6BBD/Xxxx/R.E.M.")).exists()
、それは true を返します!
「adb shell」で見てみると
hero2lte:/storage/9C33-6BBD/Xxxx $ ls -la
total 768
drwxrwx--x 3 root sdcard_rw 131072 2017-07-19 14:18 .
drwxrwx--x 17 root sdcard_rw 131072 2017-07-19 13:31 ..
drwxrwx--x 2 root sdcard_rw 131072 2017-07-19 13:46 R.E.M
hero2lte:/storage/9C33-6BBD/Xxxx $ ls -lad R.E.M.
drwxrwx--x 2 root sdcard_rw 131072 2017-07-19 13:46 R.E.M.
ディレクトリ displayName の制限に関するドキュメントがどこにあるか知っている人はいますか?
ありがとう :)