在某些手机上,有两个外部存储目录。例如,在某些手机上,有/sdcard(internal storage)
和/sdcard/external_sd
(可移动手柄或其他手机)。这两个主持人在不同的手机上可能会有所不同,例如,可能有/sdcard
和/sdcard/_External_SD
。
我的问题是,对于给定目录,有没有办法确定它的安装位置?即,如何查找此目录是否已安装在/sdcard
或/sdcard/external_sd
上。正则表达式不应该正常工作,因为不同手机上的目录名称不同。使用此代码:
Environment.getExternalStorageDirectory()
只返回“主”外部存储目录,因此它似乎也无济于事。
答案 0 :(得分:1)
也许mount
命令输出有帮助。
以下为您(第一个)提供备用外部存储路径:
String getAlternateExternalStoragePath() {
try {
Process process = Runtime.getRuntime().exec("mount");
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
int read;
char[] buffer = new char[1024];
StringBuffer output = new StringBuffer();
while ((read = reader.read(buffer)) > 0) {
output.append(buffer, 0, read);
}
reader.close();
process.waitFor();
String sdcardPath = android.os.Environment.getExternalStorageDirectory().toString() + "/";
Pattern pattern = Pattern.compile(".+ on (" + sdcardPath + ".+) type vfat");
Matcher matcher = pattern.matcher(output.toString());
if (matcher.find()) return matcher.group(1);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
// ...
String alternateExternalStoragePath = getAlternateExternalStoragePath();