android - 如何获得驾驶员分心优化的许可?
问题描述
我想编写一个汽车应用程序,它应该在用户驾驶时简单地显示地图。我正在使用 Android Studio 4.0.1 和 Kotlin 进行开发。为了创建一个用于测试的模拟器,我使用 Android Studio 4.2 Beta 1 来下载汽车系统映像,因为在 4.0.1 中没有汽车系统映像可用。
我坚持要使这个应用程序“分散注意力”,所以不幸的是,该应用程序仍然被黑屏和文字“您在驾驶时不能使用此功能”覆盖。
当我遵循指南([https://source.android.com/devices/automotive/driver_distraction/guidelines][1])时,我似乎只需将以下元数据添加到清单中的活动元素中。 xml(我只有一项活动):
<activity>
...
<meta-data android:name="distractionOptimized" android:value="true"/>
...
</activity>
当然,我还向 manifest.xml 文件中的 manifest-tag 请求以下所需的权限(以及其他权限):
...
<uses-permission android:name="android.car.permission.CAR_UX_RESTRICTIONS_CONFIGURATION" />
<uses-permission android:name="android.car.permission.CAR_DRIVING_STATE"/>
...
以及我传递给 requestPermissions(...) 函数的权限数组
val PERMISSIONS_ARRAY = arrayOf(
...
Car.PERMISSION_CAR_UX_RESTRICTIONS_CONFIGURATION,
Car.PERMISSION_CAR_DRIVING_STATE,
...
)
requestPermissions(PERMISSIONS_ARRAY, 0)
在onRequestPermissionsResult(...)我发现这两个权限被拒绝。但在第一次应用启动时,甚至没有提示/要求用户授予该权限。同样在设置中,无法授予应用这些权限。在后面的一段代码中,getActiveRestrictions()总是返回 255,这意味着所有的限制都是有效的,对吧?另一个迹象表明该应用程序不允许自己处理驱动程序分心,因此操作系统通过根本不显示应用程序来处理它......
我究竟做错了什么?我可能会错过什么?有人有想法吗?
解决方案
在清单中将活动标记为 DO 是不够的,还必须从受信任的来源(如 Play 商店)下载/安装它,否则 CarPackageManagerService 将不允许应用程序以任何受限的驾驶状态显示。
推荐阅读
- java - 如何使用多个证书作为 Web 服务客户端 - Spring Boot
- jquery - 向两个以相同类型滚动的表格添加垂直滚动 - HTML CSS JQuery
- html - 调整浏览器大小时,浏览器是否会重新渲染整个页面和链接的 css 文件?
- c# - C# - 将 XML 发布到 MVC 站点
- jquery - jQuery从laravel中的不同页面滚动到ID
- iot - 示例数据 - 流式分析
- ios - 崩溃报告中没有用户数据
- java - 在java中打印数组中的每个单词
- excel - 将纬度/经度批量转换为十进制格式作为excel VBA?
- php - 无法让我的函数接受 PHP mysqli 查询数组