我的应用需要在手机存储中保存一些数据。用户可以选择数据保存的位置。我遇到了一个 HTC EVO 用户的问题,他没有看到我的应用程序中列出的外部卡。
我正在使用Environment.getExternalStorageDirectory().getAbsolutePath()
,但这会导致内部 SD 卡,而不是外部 SD 卡。请告诉我我应该遵循什么路径(即使它是硬编码的)来列出他手机上的 ext sd?我想列出两张 SD 卡...列出了 1 个,但没有看到另一个...
我的应用需要在手机存储中保存一些数据。用户可以选择数据保存的位置。我遇到了一个 HTC EVO 用户的问题,他没有看到我的应用程序中列出的外部卡。
我正在使用Environment.getExternalStorageDirectory().getAbsolutePath()
,但这会导致内部 SD 卡,而不是外部 SD 卡。请告诉我我应该遵循什么路径(即使它是硬编码的)来列出他手机上的 ext sd?我想列出两张 SD 卡...列出了 1 个,但没有看到另一个...
我不确定 HTC Evo,但不幸的是,当存在“/mnt/sdcard(内部)和 /mnt/sdcard-ext(外部)”等两张卡时,Android 无法处理这种情况。getExternalStorageDirectory() 只会返回 /mnt/sdcard。
您可以使用 isExternalStorageRemovable() 检查它是内部存储还是外部存储。以下是此方法的说明:
返回主“外部”存储设备是否可移动。如果返回 true,则此设备是例如用户可以移除的 SD 卡。如果返回 false,则存储是内置在设备中的,无法物理移除。
参考: http: //developer.android.com/reference/android/os/Environment.html#isExternalStorageRemovable()
希望这可以帮助。
这应该有效:
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;
}