【问题标题】:Finding SD-Card Path in Android 4.4 Kitkat在 Android 4.4 Kitkat 中查找 SD 卡路径
【发布时间】:2014-08-05 18:25:43
【问题描述】:

在我的一个应用程序中,我正在访问 SD 卡中的一些文件。我正在使用以下函数来确定挂载的 sd 卡路径。

File file = new File("/system/etc/vold.fstab");
    FileReader fr = null;
    BufferedReader br = null;
    String path = "";

    try {
        fr = new FileReader(file);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } 

    try {
        if (fr != null) {
            br = new BufferedReader(fr);
            String s = br.readLine();
            while (s != null) {
                if (s.startsWith("dev_mount")) {
                    String[] tokens = s.split("\\s");

                    path = tokens[2]; //mount_point
                }
                s = br.readLine();
            }
        }            
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (fr != null) {
                fr.close();
            }            
            if (br != null) {
                br.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    return path;

这适用于 Kitkat 之前的所有设备。但在 Kitkat 版本中,我在第 1 行得到 FileNotFoundException,

File file = new File("/system/etc/vold.fstab");

我在 Android kitkat 版本中发现了很多关于更新 sd 卡权限的文章。但仍然对此有点困惑...... 请问谁能帮我解决一下???提前谢谢...

【问题讨论】:

  • 如果您想要一张实际的(可移动的)SD 卡,那么在 4.4+ 上您需要为此使用新的标准 API。如果您需要外部存储,其现有 API 将继续工作。
  • 我查看了关于外部存储的最新 android kitkat 文档,它们只是解释了 getExternalFilesDirs() 方法。你能给我任何关于新 api 的线索吗??

标签: java android android-sdcard


【解决方案1】:

vold.fstab 在 4.3 中不再使用。相反,fstab。现在存在。

参考http://source.android.com/devices/tech/storage/虽然不是很清楚

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
【解决方案2】:

您必须致电:

File sdCardPath = Environment.getExternalStorageDirectory();

知道SD卡的路径。这个函数调用调用系统操作函数来确定 SD 卡的路径。要了解外部存储的状态,您必须使用

Environment.getExternalStorageState() 

功能。

【讨论】:

  • 如果他们想要外部存储而不是 SD 卡,可以。但我怀疑这不是实际提出的问题。
  • @ChrisStratton Android 文档说,“注意:不要被这里的“外部”这个词混淆。这个目录可以更好地被认为是媒体/共享存储。它是一个可以容纳的文件系统相对大量的数据,并且在所有应用程序之间共享(不强制执行权限)。传统上这是一张 SD 卡,但它也可以作为设备中的内置存储实现,与受保护的内部存储不同,并且可以作为文件系统安装在计算机上。”
  • @MattPassell - 运行 Android 4.4 的手机可能会使用永久安装的内存作为其“外部存储”,任何 SD 卡插槽都被视为辅助存储 - 您可能仍会看到“可移动 SD 的旧方法”将是开发板和运行 Android 的嵌入式设备。从来没有理由为“外部存储”轮询vold而不是使用它的API,所以发帖人从这开始强烈暗示他们想要一个辅助存储。
  • @ChrisStratton - 好的。自从我上次尝试编写 Android 应用程序以来,事情肯定变得更加复杂了。
  • 其实我想要挂载的存储路径(sd-card)。这给了我外部存储路径,但这并不能保证它是 sd 卡。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-31
  • 2014-05-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多