我的应用需要在手机存储空间中保存一些数据。用户可以选择数据保存的位置。我有一个HTC EVO用户的问题,他没有看到我的应用程序中列出的外部卡。
我正在使用Environment.getExternalStorageDirectory().getAbsolutePath()
,但这会导致内部SD卡,而不是外部SD卡。请告诉我应该遵循哪条路径(即使是硬编码的)来列出手机上的分机号码?我想列出两张SD卡......列出了1但是没看到另一张......
答案 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;
}