C

Qt for Android Automotive 的权限

在部署使用 Qt for Android Automotive 模块的程序时,所需的权限会自动由 部署工具 添加到 Android 表明文件中。一些 Qt for Android Automotive API 针对那些本质上需要权限受限更紧密的使用场景,比如实现启动程序或访问车辆属性。

在多数情况下,你不一定需要模块中所有的权限。如果你只想使用来自 Qt Android Automotive Base 模块QAndroidNotificationListener 而不使用来自模块中其他 API 的权限,你也可以这样做。

此页列出了每个 Qt for Android Automotive 模块使用的权限以及自动添加到表明文件中,并展示了如何覆盖默认部署工具行为以手动控制添加的权限。

按模块分区权限

Qt Android Automotive 基础模块中的权限

以下表格概述了由 Qt Android Automotive Base 模块 使用的权限。

权限使用用途
QUERY_ALL_PACKAGESQAndroidAppsUtils, QAndroidNotificationListener获取所有已安装应用的列表,获取它们的图标和通知
REQUEST_DELETE_PACKAGESQAndroidAppsUtils请求卸载一个包
MANAGE_USERSQAndroidUserProfiles获取用户信息

Qt Android Automotive 媒体模块中的权限

以下表格概述了由 Qt Android Automotive 媒体模块 使用的权限。

权限使用用途
CAR_CONTROL_AUDIO_SETTINGSQDynamicAudioRouting控制应用程序音频区域设置
CAR_CONTROL_AUDIO_VOLUMEQDynamicAudioRouting初始化动态音频路由 API(仅在 Android 10 上有效)

Qt Android Automotive 车辆模块中的权限

车辆 C++Quick 库不需要任何权限。但是,Qt Android Automotive 车辆模块 从其 车辆属性 库继承了所有需要的权限。这个生成的库可以访问通过 Android Car API 可用的所有车辆属性,因此需要所有这些属性的权限。

以下表格概述了由 Qt Android Automotive 车辆模块 使用的权限。

权限使用用途
CONTROL_CAR_CLIMATE车辆属性控制汽车气候系统所有设置
CONTROL_CAR_WINDOWS车辆属性控制汽车车窗和相关参数
CAR_ENERGY车辆属性读取汽车能源信息
CAR_ENERGY_PORTS车辆属性访问汽车的充电端口或燃油门状态
CONTROL_CAR_ENERGY_PORTS车辆属性控制汽车的充电端口或燃油门
CAR_INFO车辆属性读取汽车制造商信息、功能、可用特性
CAR_IDENTIFICATION车辆属性读取汽车识别数据
CONTROL_CAR_MIRRORS车辆属性控制汽车后视镜位置和行为
CONTROL_CAR_SEATS车辆属性控制汽车座椅的运动和状态
CONTROL_CAR_DOORS车辆属性控制汽车车门
CAR_TIRES车辆属性读取轮胎气压
CAR_MILEAGE车辆属性读取汽车里程表状态
CAR_SPEED车辆属性读取汽车速度数据
CAR_POWERTRAIN车辆属性读取汽车动力系统信息
CAR_POWER车辆属性读取汽车系统电源状态信息
CAR_ENGINE_DETAILED车辆属性读取与发动机相关的信息,如RPM、液体水平和温度
CAR_DYNAMICS_STATE车辆属性读取动态系统(如ABS或牵引力控制)的状态
READ_CAR_DISPLAY_UNITS车辆属性读取汽车使用的各种显示单元
CONTROL_CAR_DISPLAY_UNITS车辆属性控制汽车使用的显示单元
CAR_EXTERIOR_ENVIRONMENT车辆属性读取汽车外部环境,如室外温度
CAR_EXTERIOR_LIGHTS车辆属性读取汽车所有外部灯具和指示灯的状态
CONTROL_CAR_EXTERIOR_LIGHTS车辆属性控制汽车外部灯具
READ_CAR_INTERIOR_LIGHTS车辆属性读取汽车内灯的状态
CONTROL_CAR_INTERIOR_LIGHTS车辆属性控制汽车内的内灯
ADJUST_RANGE_REMAINING车辆属性调整汽车计算出的剩余里程
CAR_VENDOR_EXTENSION车辆属性访问车辆厂商通道以交换特定信息

Qt Android Activity View模块中的权限

Qt Android Activity View模块使用以下权限来能够启动嵌入到QActivityView中的外部Activity。

请注意,删除这些权限中的任何一个都可能导致不可定义的行为,因为实现会根据所使用的特定Android版本使用不同的系统组件。这也是为什么这里的一些权限是Android本身的内部权限。所有这些权限都是用于允许与嵌入内容完全交互的原因。

权限需要自
android.permission.ACTIVITY_EMBEDDING所有版本
android.permission.INJECT_EVENTS所有版本
android.permission.INTERNAL_SYSTEM_WINDOW所有版本
android.permission.MANAGE_ACTIVITY_STACKS所有版本
android.permission.MANAGE_ACTIVITY_TASKS从Android 12起
android.permission.QUERY_ALL_PACKAGES所有版本
android.permission.REMOVE_TASKS所有版本
android.permission.REORDER_TASKS所有版本
android.permission.START_ANY_ACTIVITY所有版本
android.permission.CAPTURE_BLACKOUT_CONTENT从Android 12起
android.permission.INTERACT_ACROSS_USERS_FULL从Android 12起
android.permission.ROTATE_SURFACE_FLINGER从Android 12起
android.permission.ACCESS_SURFACE_FLINGER从Android 12起
android.permission.READ_FRAME_BUFFER从Android 12起

手动处理权限

如果您需要对Android声明文件中的权限有更多控制,可以轻松地为项目添加一个自定义的声明文件。创建此类声明文件模板的步骤已在Qt Creator手册中描述。

添加了模板Android声明文件后,打开它。您会在其中找到权限的占位符

<!-- %%INSERT_PERMISSIONS -->

删除该行可以防止部署自动添加所有模块列表中作为其要求的所有权限。之后,您可以手动添加您想要的权限。例如,如果您想声明您的应用程序使用了QUERY_ALL_PACKAGES权限,您应该添加如下条目

<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />

注意:您需要为应用程序需要的每个权限添加一个条目,因为部署工具将不再为您处理此操作。更多相关信息,请参阅详细的Android 文档

注意:请记住,您在manifest文件中的修改将影响整个项目,而不仅仅是Qt for Android Automotive的权限。

在特定的Qt许可证下可用。
了解更多。