我遇到了问题。我有一个星系标签,附带16GB内存和2GB SD卡。
当我使用environment.getExternalStorageState时,它返回已挂载。但是,当我从我的galaxy选项卡中删除sd-card时,它仍然会返回已安装,因为它将内部存储视为外部存储。有什么方法可以区分实际的SD卡和内部存储器吗?
由于
答案 0 :(得分:2)
目前似乎没有任何公共API。您可以通过查看/proc/mounts
进行检查,但您的代码将依赖于设备,因为并非所有设备都在同一位置安装辅助外部存储(SD卡)。
答案 1 :(得分:1)
您可以确定SD卡的挂载路径,如果它与系统无关,那么它可能是外部媒体。请尝试在此处查看此链接:
答案 2 :(得分:0)
我认为/storage/sdcard0/
用于内部sdcard,如果存在两个存储选项,则/storage/sdcard1/
用于外部SD卡。
如果您正在检查文件是否存在于任何SD卡中,则应检查所有可能的路径。
String path;
if(new File("/mnt/sdcard/yourpath").exists()) {
path="/storage/sdcard/yourpath";
} else if(new File("/storage/sdcard0/yourpath").exists()) {
path="/storage/sdcard0/yourpath";
} else if(new File("/storage/sdcard1/yourpath").exists()) {
path="/storage/sdcard1/yourpath";
}
答案 3 :(得分:0)
我已经创建了自己的支票,但它确实有效。它检查是否存在辅助的真实SD卡。 在三星Galaxy s5 neo,阿尔卡特一触式5020x以及HTC One X上进行了测试。 该代码应该适用于KITKAT设备,因为它使用app default dir进行检查。
我在主存储上创建一个默认应用程序路径存储的String。 然后改变" primary"到" secondary",然后尝试创建一个文件夹并检查是否存在。
下面是代码:
{{1}}
答案 4 :(得分:-2)
我试试这个
if(android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))
{
Log.i("tag", "SDCard is mounted");
}
或this example可以帮助您