在某些电话上,有两个外部存储目录。例如,在某些电话上,有/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/

10-13 04:18