在连接USB后使用意图过滤器启动活动时,Android 10会堆叠USB权限

时间:2019-09-23 08:47:07

标签: android-10.0 android-usb

我的设置

  • Pixel 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端口?”)将自动关闭,导致损坏的功能。

关于如何处理这两个权限的任何建议?

0 个答案:

没有答案