android-10.0 - 连接USB时使用意图过滤器启动活动时的Android 10堆叠USB权限
问题描述
我的设置
- Pixel 3/Android 10(但在三星 Galaxy S9/Android 9 上也有同样的问题)
- 应用面向 API 29 (Android 10)
- USB 设备
在 Android 10 上,权限模型发生了变化,这意味着读取 USB 设备的序列号需要明确的用户权限,请参阅:https ://developer.android.com/preview/privacy/data-identifiers#usb-串行用户权限。
因此,当收到连接 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 端口?”)将自动关闭,导致功能中断。
关于如何处理这两个权限的任何建议?
解决方案
推荐阅读
- swift - 无法在子类 FUIAuthPickerViewController 上显示背景
- android - Ionic v4 在物理设备中出现黑屏
- python-3.x - 使用 os.system 在 Python3 中将文件的内容设置为变量
- graphql - 如何根据 frontmatter 对 GraphQL 查询进行排序
- .net - 追加/删除字符串中的字符与追加/删除后的原始字符串不同
- apache-spark - 如何在 phoenix-spark 中配置 zkUrl
- powershell - Powershell Select-String:按命名的正则表达式组获取结果
- java - 类级别验证器不适用于 spring 中的字段
- transactions - 来自两个集合的更新文档的 AQL 查询是否作为事务运行?
- git - 漂亮格式的 Git 日志源