android 如何从充当 USB 大容量存储器的设备获取文件路径

How to get the file path from a device acting as a usb mass storage in android

我正在尝试从充当 USB 大容量存储器的 Garmin 设备获取文件名(以及文件路径)。将设备连接到电脑,文件路径为G:\Garmin。使用 OTG 和资源管理器将其连接到 android 平板电脑(我检查了应用程序设置 - 程序包名称是:com.android.rk),文件路径是 USB/Garmin。使用ES File Explorer,我看到文件路径是mnt/usb_storage/Garmin。所以在代码中,当我试图从文件路径 usb_storage/Garmin 解析 system.xml 时,我把文件路径放成这样:

String file = Environment.getExternalStorageDirectory() + "mnt/usb_storage/Garmin/system.xml";

当我 运行 应用程序崩溃时,这意味着它无法找到文件 system.xml。当我在通过 OTG 连接的 USB 设备中查找文件时,我使用 Environment.getExternalStorageDirectory() 是否正确?你能指出我应该做什么吗?非常感谢。

通过使用 Environment.getExternalStorageDirectory(),您实际上是在指向您的 SD 卡或内部存储器(取决于哪个被设置为当前)并且 在其下 您正在寻找设备挂载点。

但是 Unix 中的挂载点是在根级别。
因此,直接尝试/mnt/usb_storage/Garmin/system.xml,而不是

String file = Environment.getExternalStorageDirectory() + "mnt/usb_storage/Garmin/system.xml";

你的意思是:

String fileName = "/mnt/usb_storage/Garmin/system.xml";

就是这样。注意 tne /mnt/... 所以不是 mnt/...