从 SD 卡读取文件的标准方法

Standard way to read a file from sdcard

我找不到运行所有设备和 return sdcard 基本路径的方法。我找到了以下方法来使用过滤器 "storage" 获取所有文件,然后检查它是否是外部文件。它在少数设备上运行良好。

File root = new File("/storage/");
    File dirs[] = root.listFiles();

    for (File dir : dirs) {
        if (Environment.isExternalStorageRemovable(dir.getAbsoluteFile())) {
            return dir.getPath();
        }
    }

现在我手里有一个设备,它的sdcard路径是“roor/Removable/MicroSd,通过上面的代码我无法读取这张卡。我已经浏览了很多链接但找不到标准方法。我也尝试过以下,但这不是 return 实际地址。

String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();

我想您希望访问可移动 SDCard。获取该 SDCard 路径的标准方法是: Context.getExternalFilesDirs() 。通常 SDCard 路径是最后一个,你必须去掉私有子路径 (Android/...) 。最好检查是否也挂载了 SDCard

String path = null;
File[] dirs = getContext().getExternalFilesDirs(null);
if (dirs!=null && Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
    path = dirs[dirs.length-1].getAbsolutePath();
    path = path.substring(0, path.indexOf("Android"));
}
 return path;