Разрешение USB 10 для Android 10 при использовании фильтра намерений для запуска активности при подключенном USB - PullRequest
0 голосов
/ 23 сентября 2019

Моя настройка

  • Пиксель 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-порту?»).

Permission dialog 1

Чтобы также иметь возможность запускать приложение при подключении соответствующего 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-порта?»).

Permission dialog #2

Но, как упоминалось ранее, приложениеИон также должен запросить разрешение на чтение серийного номера, что приведет ко второму диалогу разрешения.

Эти два диалоговых окна теперь сложены, и, если вы согласны с первым диалогом («Открыть X для обработки виртуального COM-порта?»), Второй («Разрешить X доступ к COM-порту?»)автоматически отклоняется, что приводит к нарушению функциональности.

Есть предложения о том, как обрабатывать эти два разрешения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...