Моя настройка
- Пиксель 3 / Android 10 (но та же проблема на Samsung Galaxy S9 / Android 9)
- Цели приложения API 29 (Android 10)
- USB-устройство
В Android 10 произошла смена модели разрешений, что означает, что для чтения серийного номера USB-устройства требуется явное разрешение пользователя, см .: https://developer.android.com/preview/privacy/data-identifiers#usb-serial-user-permission.
Поэтому при получении намерения подключить USB-устройство я автоматически запрашиваю разрешение на чтение серийного номера (в результате появляется диалоговое окно с разрешением: «Разрешить X доступ к виртуальному COM-порту?»).
Чтобы также иметь возможность запускать приложение при подключении соответствующего USB-устройства, ранее также можно было это сделать (AndroidManifest.xml):
<activity
android:name="MainActivity"
android:screenOrientation="portrait"
>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter>
<action
android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
/>
</intent-filter>
<meta-data
android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/my_device_filter"
/>
</activity>
..., что также приводит к появлению диалогового окна с запросом разрешения при подключении нового USB-устройства («Открыть X для обработки Com-порта?»).
Но, как упоминалось ранее, приложениеИон также должен запросить разрешение на чтение серийного номера, что приведет ко второму диалогу разрешения.
Эти два диалоговых окна теперь сложены, и, если вы согласны с первым диалогом («Открыть X для обработки виртуального COM-порта?»), Второй («Разрешить X доступ к COM-порту?»)автоматически отклоняется, что приводит к нарушению функциональности.
Есть предложения о том, как обрабатывать эти два разрешения?