我需要从 / 到 USB 棒导入/导出一些数据。有没有办法获取已安装的 USB 设备的路径?
我的代码看起来像这样:
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();
while(deviceIterator.hasNext()){
UsbDevice device = deviceIterator.next();
UsbInterface deviceInterface = device.getInterface(0);
if(deviceInterface != null && deviceInterface.getInterfaceClass() == UsbConstants.USB_CLASS_MASS_STORAGE){
// check if path "mnt/usb_storage/*" exist
}
}
当设备为大容量存储时,我可以搜索路径“mnt/usb_storage/*”是否存在。如果仅连接了一个 USB 大容量存储器,或者当连接了第二个 USB 大容量存储器时应用程序处于前台,则此方法可以正常工作。如果您想知道,是的,有多个 USB 端口的 Android 设备。
当我有 UsbManager/UsbDevice/UsbInterface 时,是否无法获取路径?所有设备上的路径都像“mnt/usb_storage/*”吗?
更新1:
目标 Android 版本 5.1 要求:必须在应用程序中集成“文件选择器”,必须应用文件夹过滤器、文件名和文件类型。
更新 2:
正如@greenapps 所建议的,我尝试了“ACTION_OPEN_DOCUMENT_TREE”:
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
intent.putExtra("android.content.extra.SHOW_ADVANCED", true);
intent.putExtra("android.content.extra.FANCY", true);
intent.putExtra("android.content.extra.SHOW_FILESIZE", true);
startActivityForResult(intent, OPEN_DOCUMENT_TREE_REQUEST_CODE);
相同设备:es-datei explorer 能够显示 USB 设备。
我的要求是显示一个自定义文件选择器,用户可以在其中从客户特定的云、内部存储或类似于 es datei explorer 的 USB 设备中选择文件。
我搜索路径是否存在的解决方案:“mnt/usb_storage/*”存在按要求工作我只是想知道是否有更好的方法。