有没有办法确定指定的目录是否在可移动的SD卡中?

时间:2012-02-12 03:52:33

标签: android

在某些手机上,有两个外部存储目录。例如,在某些手机上,有/sdcard(internal storage)/sdcard/external_sd(可移动手柄或其他手机)。这两个主持人在不同的手机上可能会有所不同,例如,可能有/sdcard/sdcard/_External_SD

我的问题是,对于给定目录,有没有办法确定它的安装位置?即,如何查找此目录是否已安装在/sdcard/sdcard/external_sd上。正则表达式不应该正常工作,因为不同手机上的目录名称不同。使用此代码:

Environment.getExternalStorageDirectory()

只返回“主”外部存储目录,因此它似乎也无济于事。

1 个答案:

答案 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();