Я пытаюсь создать что-то вроде проводника файлов через подключенные USB-устройства (через OTG или USB-порты на Android-телефоне). Все, что мне нужно для этого - это путь, похожий на «/ storage/sda4» и идентификатор устройства, а затем я могу работать с устройством через simle android class File. Является ли звук простым, но я не могу найти информацию об этом, но все поисковики могут это сделать (например, ESExplorer). Хорошо, я найти простой способ получить все подключенные USB-устройства с идентификаторомКак я могу читать файлы с устройства usb на Android?
UsbManager usbManager = (UsbManager) context.getSystemService(Context.USB_SERVICE);
usbManager.getDeviceList();
, но как я могу получить информацию о пути? deviceName содержит что-то вроде этого «/ dev/bus/usb/00x», но это не может мне помочь, мне нужен простой эмулированный путь android («/ storage/sda4»). Эта страница https://developer.android.com/guide/topics/connectivity/usb/host.html сообщает, что мне нужно получить UsbInterfaces и сделать UsbConnection массовым переносом и другой ерундой, я сделал все, но не нашел путь к устройству или любую другую информацию о списке файлов usb.
Хорошо, я найти другой способ, чтобы получить (что не требует разрешения!), Чтобы получить путь ко всем подключенным устройствам
StorageManager storageManager = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE);
Method getVolumeListMethod = StorageManager.class.getDeclaredMethod("getVolumeList");
Object[] storageVolumeList = (Object[]) getVolumeListMethod.invoke(storageManager);
и он работает, но мне нужно, чтобы идентифицировать устройство (потому что я хочу кеш-файлы разных хранилищ usb), но все, что я могу получить от объекта тома, это mStorageId, mDescriptionId, mPrimary, mRemovable, mEmulated, mMtpReserveSpace, mAllowMassStorage, mMaxFileSize, mOwner, mUuid, mUserLabel, mState, mSubSystem. Ничего из этого не может определить устройство: mDescriptionId и mStorageId: уникальный порт fot usb, mUuid - null, mUserLabel не уникален.
Environment.getExternalFilesDirs() не поможет, он не предоставляет идентификатор устройства и работает только с одним устройством.
Здесь у меня есть аналогичный вопрос, но он не имеет правильного ответа Android list files from USB Drive.
Ну, простой способ получить список устройств USB с путями и идентификаторами существует?
Посмотрите 'getExternalFilesDirs()'. Третьей записью будет диск ust ust. – greenapps
Я только что отредактировал вопрос, я упомянул getExternalStorageDirectory вместо getExternalFilesDirs. Он не предоставляет идентификатор устройства – LamaUltramarine
Для чего вам нужен идентификатор устройства, если вы хотите сделать файловый проводник? Вам нужен только путь. И getExternalFilesDirs() предоставит вам это. Не говорите, что это не так! – greenapps