获取Android 4.3中的外部存储列表



我一直在扫描/etc/vold.fstab以获取外部存储的列表。它一直运行良好,直到Android 4.3谷歌删除了该文件。我知道现在使用了一个统一的/fstab.*文件,但如果没有root,它是无法访问的。

那么在Android 4.3中,我应该怎么做才能获得外部存储的列表?

我的代码看起来像这样。现在它包括不可移动的内部存储和可移动的外部存储。

File voldFile = new File("/system/etc/vold.fstab");
fr = new FileReader(voldFile);
br = new BufferedReader(fr);
String line = br.readLine();
while (line != null) {
    if (line.startsWith("dev_mount")) {
        String[] tokens = line.split("\s");
        File mountPoint = new File(tokens[2]);
        if (mountPoint.isDirectory() && mountPoint.canRead())
            list.add(tokens[2]);
    }
    line = br.readLine();
}

我最终扫描了当前装载的存储的/proc/mounts输出。代码与下面类似。

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
    File voldFile = new File("/proc/mounts");
    fr = new FileReader(voldFile);
    br = new BufferedReader(fr);
    String line = br.readLine();
    while (line != null) {
        Log.d(TAG, line);
        if (line.startsWith("/")) {
            String[] tokens = line.split("\s+");
            if ("vfat".equals(tokens[2])) {
                File mountPoint = new File(tokens[1]);
                if (!tokens[1].equals(defaultMount))
                    if (mountPoint.isDirectory() && mountPoint.canRead())
                        list.add(tokens[1]);
            }
        }
        line = br.readLine();
    }
}

相关内容

  • 没有找到相关文章