Подтвердить что ты не робот

Как мы более легко переключаемся на MTP на устройстве Android 6.0 с поддержкой Debug?

В Android 6.0 MTP больше не работает автоматически:

Соединения устройств через USB-порт теперь по умолчанию установлены на режим только оплаты. Чтобы получить доступ к устройству и его содержимому через USB-соединение, пользователи должны явно предоставить разрешение на такие взаимодействия. Если ваше приложение поддерживает взаимодействие пользователя с устройством через порт USB, учтите, что взаимодействие должно быть явно включено.

MTP необходимо повторно разрешить, по крайней мере, каждый раз, когда вы подключаете USB-кабель и, возможно, чаще, чем это (тайм-ауты?).

При включенной отладке USB единственное решение, которое я нашел, чтобы получить доступ к MTP для работы на устройстве, - это:

  • Перейдите в Настройки > Параметры разработчика
  • Прокрутите вниз до пункта "Выбор конфигурации USB"
  • Переключить значение этой опции на что угодно, кроме MTP, например "Только зарядка" (если она находится в MTP прямо сейчас)
  • Переключите значение этой опции в MTP
  • Обновите свой клиент MTP (например, на Ubuntu 15.04, закройте и заново откройте окно, отображающее содержимое устройства).

Это отягчает, когда вы пытаетесь работать с файлами устройства на внешнем хранилище.

Есть ли способ командной строки для запуска MTP, за исключением написания теста "UIAutomator", который автоматизирует вышеуказанный процесс? Или, есть ли другой способ заставить MTP работать без такого процесса подготовки?

4b9b3361

Ответ 1

В Marshmallow (6.0 и 6.0.1) это невозможно без какой-либо супермощности: - (

adb shell svc usb setFunction mtp

throws java.lang.SecurityException: Neither user 2000 nor current process has android.permission.MANAGE_USB. и MANAGE_USB - это разрешение signature|privileged. Я зарегистрировал это как issue # 193062. Он был введен в состояние Assigned и помечен как Defect-25596495. Он исправлен в предпросмотре N разработчиков.