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_PACKAGES | QAndroidAppsUtils, QAndroidNotificationListener | 获取所有已安装应用的列表,获取它们的图标和通知 |
REQUEST_DELETE_PACKAGES | QAndroidAppsUtils | 请求卸载一个包 |
MANAGE_USERS | QAndroidUserProfiles | 获取用户信息 |
Qt Android Automotive 媒体模块中的权限
以下表格概述了由 Qt Android Automotive 媒体模块 使用的权限。
权限 | 使用 | 用途 |
---|---|---|
CAR_CONTROL_AUDIO_SETTINGS | QDynamicAudioRouting | 控制应用程序音频区域设置 |
CAR_CONTROL_AUDIO_VOLUME | QDynamicAudioRouting | 初始化动态音频路由 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许可证下可用。
了解更多。