【发布时间】:2013-05-29 08:28:14
【问题描述】:
我有带 sd 卡插槽的手机 (B15 CAT)。当我在此手机中插入 sdcard 并询问外部存储目录时:
Environment.getExternalStorageDirectory()
它总是在 sdcard0 上返回一个空间,这是内部存储器。这个内存太小了,无法满足我的需要。 通过列出 /mnt 我找到了一个名为 /sdcard2 的挂载点,它是“真正的”scard。 不幸的是 sdcard2 似乎不是标准,其他品牌会使用其他名称...
知道 getExternalStorageDirectory() 似乎在没有 sdcard 插槽的手机上按预期工作,例如 nexus 4,我应该如何处理外部存储以确保写入 sdcard(可用空间大)而不是内部存储器?
我尝试过这样的事情:
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();
}
它可以工作,但只适用于这个特定的手机和其他没有 sdcard 插槽的手机......
【问题讨论】: