Android设备上外部SDCard的文件路径是否始终为“/storage/extSdCard” 是真的吗?如果没有,有多少种变化?
我的应用程序需要它来测试外部 SD卡的可用性。
我正在使用Titanium,它具有方法 Titanium.Filesystem.isExternalStoragePresent()
但即使未安装外部SDCard,它也始终返回true。
我认为它在本地存储中检测到SDCard,因此返回true。但是我真正想要的是检测是否安装了物理SDCard。
我能否仅通过检测文件“/storage/extSdCard” 的存在来做到这一点?
谢谢。
最佳答案
遗憾的是,根据制造商的说法,通往外部存储器的路径并不总是相同的。使用Environment.getExternalStorageDirectory()
将返回SD卡的正常路径mnt/sdcard/
。但是,例如对于三星设备,SD卡路径位于mnt/extSdCard/
或mnt/external_sd/
下。
因此,一种进行方法是根据每个制造商使用的路径检查外部目录的存在。用这样的东西:
mExternalDirectory = Environment.getExternalStorageDirectory()
.getAbsolutePath();
if (android.os.Build.DEVICE.contains("samsung")
|| android.os.Build.MANUFACTURER.contains("samsung")) {
File f = new File(Environment.getExternalStorageDirectory()
.getParent() + "/extSdCard" + "/myDirectory");
if (f.exists() && f.isDirectory()) {
mExternalDirectory = Environment.getExternalStorageDirectory()
.getParent() + "/extSdCard";
} else {
f = new File(Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/external_sd" + "/myDirectory");
if (f.exists() && f.isDirectory()) {
mExternalDirectory = Environment
.getExternalStorageDirectory().getAbsolutePath()
+ "/external_sd";
}
}
}
我还没有尝试代码,但是Dmitriy Lozenko在answer中的方法更有趣。 他的方法返回系统上所有已安装SD卡的路径,而与制造商无关。
关于android - Android的外部SDCard文件路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23123461/