SDカードスロット付きの電話(B15 CAT)を持っています。この電話にSDカードを挿入し、次のように外部ストレージディレクトリを要求すると:
Environment.getExternalStorageDirectory()
内部メモリであるsdcard0に常にスペースを返します。このメモリは、私のニーズには小さすぎます。/mnt を一覧表示すると、「本物の」カードである /sdcard2 という名前のマウント ポイントが見つかりました。残念ながら、sdcard2 は標準ではないようで、他のブランドでは別の名前を使用する予定です...
getExternalStorageDirectory() は、nexus 4 のような SD カード スロットのない電話で期待どおりに動作しているように見えることを知っています。
私はこのようなことを試しました:
File mnt = new File("/mnt");
File[] liste = mnt.listFiles();
boolean hassd2 = false;
for(File mount : liste) {
if(folder.getName().equals("sdcard2") {
hassd2 = true;
break;
}
}
String path = "";
if(hassd2) {
path = "/sdcard2/my/folder/"
} else {
File p = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/my/folder/");
path = p.toString();
}
それは機能していますが、この特定の電話とSDカードスロットのない他の電話でのみ...