android - 如何找到挂载到android的USB路径?

标签 android usbserial usb-flash-drive

我正在开发一个从 USB 读取数据的 Android 应用程序。 USB可以通过串行端口连接到android,我的应用程序可以找到它。

现在,我想从USB读取数据文件和文件夹。我读过很多文章。我发现他们使用这段代码:

Environment.getExternalStorageDirectory();

但是在我的例子中,我得到的路径是/storage/emulated/0。 当我尝试读取路径中包含的所有文件时,我得到以下语句:

/storage/emulated/0/Android
/storage/emulated/0/Music
/storage/emulated/0/Podcasts
/storage/emulated/0/Ringtones

等等

但是找不到我的U盘路径。所以,我不确定这是从 USB 读取文件的正确方法吗?

这是我的代码:

File f = Environment.getExternalStorageDirectory();
File[] files = f.listFiles();
String fol = "";
for (File inFile : files) {
    if (inFile.isDirectory()) {
        fol += inFile.toString()+"\n";
    }
}
TextView tv = (TextView) findViewById(R.id.demoTitle);
tv.setText(fol);

最佳答案

使用这段代码获取所有挂载的设备

public String getStoragepath() {
    try {
        Runtime runtime = Runtime.getRuntime();
        Process proc = runtime.exec("mount");
        InputStream is = proc.getInputStream();
        InputStreamReader isr = new InputStreamReader(is);
        String line;
        String[] patharray = new String[10];
        int i = 0;
        int available = 0;

        BufferedReader br = new BufferedReader(isr);
        while ((line = br.readLine()) != null) {
            String mount = new String();
            if (line.contains("secure"))
                continue;
            if (line.contains("asec"))
                continue;

            if (line.contains("fat")) {// TF card
                String columns[] = line.split(" ");
                if (columns != null && columns.length > 1) {
                    mount = mount.concat(columns[1] + "/requiredfiles");

                    patharray[i] = mount;
                    i++;

                    // check directory is exist or not
                    File dir = new File(mount);
                    if (dir.exists() && dir.isDirectory()) {
                        // do something here

                        available = 1;
                        finalpath = mount;
                        break;
                    } else {

                    }
                }
            }
        }
        if (available == 1) {

        } else if (available == 0) {
            finalpath = patharray[0];
        }

    } catch (Exception e) {

    }
    return finalpath;
}

关于android - 如何找到挂载到android的USB路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16262830/

相关文章:

android - 如何使分段搜索栏/ slider 看起来像下面这样?

Android USB 配件与 Linux 系统通信

c - 在用户空间 Linux C 代码中检索用于 USB 串行写入传输的缓冲区/数据包/有效负载大小

c - 在 uC-OS/II 中从 USB 内存棒读取/写入文件

microcontroller - 如何用我自己的电路检测U盘上是否有数据事件?

java - imageviewtouch未显示在对话框中

java - 如何将一些函数从 Activity 转换为 Fragment?

android - 我有一个 Recyclerview 和一个包含 5000 个项目的列表,但我只想一次加载 100 个项目

android - Arduino <-> Cordova (Android) 串行通信的问题