【问题标题】:Getting sd card directory in Android device在 Android 设备中获取 sd 卡目录
【发布时间】:2014-02-18 12:19:56
【问题描述】:

以下是为检索 sd 卡目录而编写的代码。 我一直在使用执行命令并更改为读取 /proc/mounts。 我的问题是它是否是正确的代码?

不是 Linux 操作系统专家。所有设备的 /proc/mounts 路径是否相同? 我认为这段代码也不会有任何命令注入的可能性。

// Process process = new ProcessBuilder().command("mount").start();
        // process.waitFor();

        reader = new BufferedReader(new FileReader("/proc/mounts"));
        String line;
        while ((line = reader.readLine()) != null) {
            // Output the line of output from the mount command
            logger.debug("   {}", line);

            if (line.startsWith("/dev/block/vold/")) {
                String[] tokens = line.split(" ");
                if (tokens.length >= 3 && (tokens[2].equals("vfat") || tokens[2].equals("exfat"))) {
                    String path = tokens[1];
                    File file = new File(path);
                    if (file.exists() && file.isDirectory()) {
                        logger.debug("Detected SD card at {}", file.getPath());

                        if (!file.canWrite()) {
                            logger.warn("The SD card path {} is reporting that it is not writable", file.getPath());
                        }

                        return path;
                    }
                }
            }
        }

干杯, 索拉夫

【问题讨论】:

  • 要获取 android sdcard 路径需要做很多事情
  • Environment.getExternalStorageDirectory();
  • 据我所知,使用这个 API 是不正确的,因为不同的制造商会以不同的方式考虑外部存储。检查这个stackoverflow.com/questions/9340332/…

标签: android linux


【解决方案1】:

在 Android 上,您可以通过以下方式在任何设备上获取 sd 卡的目录

Environment.getExternalStorageDirectory();

http://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory()

【讨论】:

  • 据我所知,使用这个 API 是不正确的,因为不同的制造商会以不同的方式考虑外部存储。检查这个stackoverflow.com/questions/9340332/…
  • 其实就是专门用来避免这个问题的api
  • 也可以在这里查看stackoverflow.com/questions/11281010/…。 Envrionment.getExternalStorageDirectory() 并非在所有情况下都有效
  • 它仍然应该提供一个您可以写入的目录...我一直使用它,从来没有遇到过问题。好吧,我猜,请忽略我的回答。
【解决方案2】:

请使用

Environment.getExternalStorageDirectory(); 获取 SD 卡的路径。

另外,使用Environment.getExternalStorageState() 对属性Environment.MEDIA_MOUNTED 等,检查SD 卡是否可读、已安装等:)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-05
  • 1970-01-01
  • 1970-01-01
  • 2018-04-23
  • 1970-01-01
  • 2011-08-06
相关资源
最近更新 更多