Программно монтируем USB-накопитель на Android 4.2.1

Я искал и искал здесь, и никакие темы не приблизились к ответу на вопрос.

Монтирование и отключение USB-накопителя из рутированного APK. Мне удалось сделать это из командной строки через ADB следующим образом:

подскажите >> mount -t vfat -o rw /dev/block/sda1 /sdcard/usb

После этой команды я могу "cd /sdcard/usb" и увидеть содержимое флешки.

Если я попытаюсь сделать это в коде с использованием класса Process, я не смогу увидеть ничего из командной строки в adb, файлового менеджера на устройстве и т. Д.:

proc = Runtime.getRuntime().exec(new String[]{"/system/xbin/su", "-c", "mount -t vfat -o rw /dev/block/sdb1 /sdcard/usb"});

proc.waitFor();

Это проблема с песочницей. Это сводит меня с ума. Вот что я думаю, и я понятия не имею, как ее решить: когда класс Process вызывает su, он делает это в совершенно новом пользовательском пространстве - своей собственной песочнице. Монтирование успешно (я вижу это из некоторой отладки), затем процесс умирает и возвращается в приложение, которое находится в другой песочнице. Из-за этого я не только не вижу крепление, но и размонтировано с удалением процесса su.

Мне нужно иметь возможность монтировать USB-накопитель из моего приложения, читать / записывать в файл, а затем размонтировать его, прежде чем он будет удален (в противном случае существует риск повреждения данных).

Я искал и искал интерфейс android или java для команд Linux mount(2) и umount(2) и оказался пустым. Там должен быть какой-то способ сделать это!

1 ответ

Вы должны прочитать это внимательно. монтирование и размонтирование должно выполняться с использованием http://developer.android.com/guide/topics/connectivity/usb/host.html

Другие вопросы по тегам