Итак, у меня есть приложение, которое будет взаимодействовать с USB-устройством. Согласно документации:
USB Host — Разработчики Android
Я создал намерение в AndroidManifest.xml, которое выглядит следующим образом:
<manifest android:versionCode="1" android:installLocation="auto" xmlns:android="http://schemas.android.com/apk/res/android" package="org.qtproject.example" android:versionName="1.0">
<uses-feature android:name="android.hardware.usb.host"/>
<application android:icon="@drawable/icon" android:name="org.qtproject.qt5.android.bindings.QtApplication" android:label="@string/app_name">
.
.
.
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"/>
<action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
.
.
.
<meta-data android:resource="@xml/usb_filter" android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"/>
Мой usb_filter.xml выглядит так:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<usb-device vendor-id="3341" product-id="5563" />
</resources>
Когда я подключаю устройство, появляется всплывающее окно «Открыть MyApp, когда подключено это USB-устройство?», И я нажимаю кнопку ОК. Согласно документации, это должно было дать приложению разрешение делать все, что угодно с USB-устройством. Но когда я попытался перечислить и подключиться к устройству, он возвращает ошибку «LIBUSB_ERROR_ACCESS: libusb требует доступа для записи на USB».
Обратите внимание, что мое приложение написано на Qt с помощью libusb если есть какая-то актуальность.
Я просмотрел другие вопросы в Stack Exchange, но все, кажется, могут получить доступ к устройству после того, как они нажали «да» во всплывающем окне, но не в моем случае нажатие «да» не дает разрешения.
Есть что-то, что я пропустил? Я хотел бы избежать написания любого кода Java, потому что это приложение будет использоваться на многих платформах.
Задача ещё не решена.
Других решений пока нет …