在android上检索外部SD卡的路径

时间:2013-10-23 03:29:08

标签: android

我的应用需要在手机存储空间中保存一些数据。用户可以选择数据保存的位置。我有一个HTC EVO用户的问题,他没有看到我的应用程序中列出的外部卡。

我正在使用Environment.getExternalStorageDirectory().getAbsolutePath(),但这会导致内部SD卡,而不是外部SD卡。请告诉我应该遵循哪条路径(即使是硬编码的)来列出手机上的分机号码?我想列出两张SD卡......列出了1但是没看到另一张......

2 个答案:

答案 0 :(得分:1)

我不确定HTC Evo,但不幸的是,当存在两张卡时,Android无法处理这种情况,例如“/ mnt / sdcard(内部)和/ mnt / sdcard-ext(外部)”。 getExternalStorageDirectory()只返回/ mnt / sdcard。

您可以使用isExternalStorageRemovable()来检查它是内部存储还是外部存储。以下是此方法的说明:

  

返回主“外部”存储设备是否可移动。如果返回true,则该设备例如是用户可以移除的SD卡。如果返回false,则存储内置于设备中,无法进行物理删除。

参考:http://developer.android.com/reference/android/os/Environment.html#isExternalStorageRemovable()

希望这有帮助。

答案 1 :(得分:0)

这应该有效:

public static File getRemovableStorage() {
    final String value = System.getenv("SECONDARY_STORAGE");
    if (!TextUtils.isEmpty(value)) {
        final String[] paths = value.split(":");
        for (String path : paths) {
            File file = new File(path);
            if (file.isDirectory()) {
                return file;
            }
        }
    }
    return null;
}