Ответ 1
Это дубликат всплывающего апплета доступа к USB-устройству?. В основном, ответ заключается в использовании фильтра-намерения на USB_DEVICE_ATTACHED и избегать вызова API-интерфейса RequestPermission USB Host.
У меня есть приложение USB Host Mode, которое отлично работает. Я подключаю устройство, Android выводит сообщение Разрешить приложению APPNAME доступ к окну запроса на доступ к USB-устройству, я проверяю флажок Использовать по умолчанию для этого устройства USB. и нажмите ОК, затем вверх придет мое приложение, и оно прекрасно взаимодействует с устройством USB.
НО...
Затем я отключу устройство и подключаю его обратно. Android выводит сообщение Разрешить приложению APPNAME снова обращаться к окну USB-устройства.. WTH? Я уже сказал Android сделать это по умолчанию, так почему он спрашивает меня снова?
Это происходит как с Icecream Sandwich 4.0.3, так и с Jellybean 4.1.
В идеале я хочу, чтобы Android помнил, что я разрешил разрешение для этого конкретного устройства USB даже после перезагрузки устройства Android.
Итак, почему Android не помнит, что я дал разрешение?
Это дубликат всплывающего апплета доступа к USB-устройству?. В основном, ответ заключается в использовании фильтра-намерения на USB_DEVICE_ATTACHED и избегать вызова API-интерфейса RequestPermission USB Host.
Я ответил на этот здесь, хотя я понимаю, что дубликаты на других сайтах SE разрешены.
В ответ на то, почему это так, как вы догадались в упомянутой теме; потому что с вашим оборудованием вы получаете разные идентификаторы при каждом подключении, например./dev/bus/usb/001/,/dev/bus/usb/002/и т.д.
Android просто не может вспомнить мой грант для моего устройства. Но, к счастью, я понял причину: я использовал шестнадцатеричные значения в device_filter.xml. После того, как я изменил его на десятичные значения, все просто отлично работает. Мой Android может запомнить мое разрешение.