android:查找sd-card是否存在

时间:2011-08-16 03:17:25

标签: android external sd-card internal

我遇到了问题。我有一个星系标签,附带16GB内存和2GB SD卡。

当我使用environment.getExternalStorageState时,它返回已挂载。但是,当我从我的galaxy选项卡中删除sd-card时,它仍然会返回已安装,因为它将内部存储视为外部存储。有什么方法可以区分实际的SD卡和内部存储器吗?

由于

5 个答案:

答案 0 :(得分:2)

目前似乎没有任何公共API。您可以通过查看/proc/mounts进行检查,但您的代码将依赖于设备,因为并非所有设备都在同一位置安装辅助外部存储(SD卡)。

答案 1 :(得分:1)

您可以确定SD卡的挂载路径,如果它与系统无关,那么它可能是外部媒体。请尝试在此处查看此链接:

Find an external SD card location

答案 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可以帮助您