在某些电话上,有两个外部存储目录。例如,在某些电话上,有/sdcard(internal storage)
和/sdcard/external_sd
(可移动棒或其他)。这两个导演在不同的电话上可能有所不同,例如,可能有/sdcard
和/sdcard/_External_SD
。
我的问题是,对于给定的目录,是否有任何方法可以确定它的安装位置?即如何查找此目录是否安装在/sdcard
或/sdcard/external_sd
上。正则表达式不能正常工作,因为不同手机上的目录名称不同。使用此代码:
Environment.getExternalStorageDirectory()
只返回“主要”外部存储目录,因此似乎也无济于事。
最佳答案
也许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();
关于android - 有没有办法确定指定的目录是否在可移动sdcard中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9246289/