Из приведенного ниже абзаца я считаю, что, если я правильно настрою фильтр намерений для действия USB_Device_Attached и фильтрую для своего устройства, у меня уже должны быть все разрешения, необходимые для подключения к нему.
Код: Выделить всё
Note: If your application uses an intent filter to discover USB devices as they're connected, it automatically receives permission if the user allows your application to handle the intent. If not, you must request permission explicitly in your application before connecting to the device.
Код: Выделить всё
public class MainActivity extends Activity {
private final static String TAG = "USB_HOST_EXAMPLE";
UsbManager usbManager;
UsbDeviceConnection connection;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
Intent intent = getIntent();
if (intent != null) {
UsbDevice device = (UsbDevice) intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
if (device != null) {
Log.w(TAG, "Started activty from intent filter, using device: " + device.getProductName());
connection = usbManager.openDevice(device);
}
}
}
}
- Приложение закрыто.
- Подключите USB-устройство.
- Всплывающее сообщение с вопросом, хочу ли я открыть свое приложение для использования этого USB-устройства. (Поэтому мой фильтр намерений должен работать)
- Приложение открывается.
- Приложение подключается к устройству.
- Приложение не может подключиться, реагирует следующим исключением:
Код: Выделить всё
java.lang.SecurityException: User has not given 10277/com.example.basic_usb_host permission to access device /dev/bus/usb/001/002
Я также пробовал перечислять устройства и запрашивать разрешения, как описано здесь, но когда я нашел свое USB-устройство и перешел к запросу разрешений, при вызове должно появиться «всплывающее окно», которое должно отображаться
Код: Выделить всё
usbManager.requestPermission(device, permissionIntent);
Код: Выделить всё
permission denied for device UsbDevice.....
Я использую Android 10, и у меня возникла та же проблема с Pixel 2 и Pixel 3a (3a имеет root-доступ).
Подробнее здесь: https://stackoverflow.com/questions/617 ... -but-shoul
Мобильная версия