Я пишу приложение, в котором Android-устройство является Host. Пользователь подключит USB-накопитель к устройству Android, и мое приложение будет записывать некоторые текстовые файлы на USB-накопитель. Путь текстовых файлов будет выглядеть как USB_DRIVE/Data/APP_NAME/myfile.txt
внутри USB-накопителя.
Приложение также должно читать текстовые файлы из определенного места или даже лучше, если оно может отображать все файлы в папке USB_DRIVE/Data/APP_NAME
, и Пользователь может выбрать файл.
Я нашел код в официальном сайте разработчика Android
UsbInterface intf = device.getInterface(0);
UsbEndpoint endpoint = intf.getEndpoint(0);
UsbDeviceConnection connection = mUsbManager.openDevice(device);
connection.claimInterface(intf, forceClaim);
connection.bulkTransfer(endpoint, bytes, bytes.length, TIMEOUT);
Я не уверен, как записать файл по определенному пути USB_DRIVE с использованием массива байтов.
FYI: в моем устройстве нет пути, аналогичного /storage/usb0/
или /storage/usbdisk0/
.
Внутри /storage/
структура файла похожа на следующую,
- хранения
- эмулировать
- 0
- Содержимое SD_CARD
- наследие
- Содержимое SD_CARD
- 0
- sdcard0 - Содержание SD_CARD
- эмулировать
Мое тестовое устройство - Nexus 10.
Я попытался с помощью приложения ES File explorer и с помощью этого приложения могу успешно перемещать/копировать любые файлы с SD_CARD на USB_DRIVE; i.e: OTG работает нормально, и чтение/запись файлов из App в USB_DRIVE выполнимо. После передачи любых файлов ES показывает путь к файлу, например, usb://1002/myfile.txt
.
Если бы я мог писать/перемещать/читать файлы с использованием намерения ES или что-то, что тоже будет работать.
или, если какое-либо решение FTP может помочь мне в достижении функциональности, я пойду на это.
Спасибо.