【问题标题】:Standard way to read a file from sdcard从 sdcard 读取文件的标准方法
【发布时间】:2017-10-30 09:21:21
【问题描述】:

我无法找到一种方法来运行所有设备并返回 sdcard 的基本路径。我找到了以下方法来使用过滤器“存储”获取所有文件,然后检查它是否是外部文件。它在少数设备上运行良好。

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”,通过上面的代码我无法读取这张卡。我浏览了很多链接但找不到标准方式。我也有尝试了以下,但这不会返回实际地址。

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

【问题讨论】:

  • 从 Android 4.4 开始,您无法通过文件系统任意读取可移动媒体。

标签: java android android-sdcard android-file


【解决方案1】:

我想您希望访问可移动的 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;

【讨论】:

  • 感谢您的回答,但 getExternalFilesDir() 将字符串作为参数。我应该在这个调用中作为字符串发送什么。
  • 废话回答。 getExternalFilesDir() 永远不会从可移动 SD 卡返回任何路径。 OP接受它很奇怪。你的意思是getExternalFilesDirs()?
猜你喜欢
  • 2012-03-04
  • 1970-01-01
  • 2016-09-22
  • 2012-01-16
  • 1970-01-01
  • 2011-04-16
  • 2011-03-30
  • 1970-01-01
相关资源
最近更新 更多