Android 12 中引入的配套设备配置文件是一项功能,可让配套应用请求一组特定于配套设备类型(例如智能手表)的权限。通过使用配套设备配置文件,应用可以在移动设备上向用户显示一个提示来请求一组定义的权限,而不是显示多个提示来分别请求各项权限,从而简化注册流程。 这可以精简配套应用的设置体验,提高选择接受率。
如需使用配套设备配置文件,配套应用必须满足以下要求:
- 管理一部配套设备(例如智能手表)。
- 具有应用功能,或调用需要使用为配套设备配置文件定义的所有权限的 Android API。
每个配套设备配置文件都对应一个 Android 角色。如需详细了解每个配置文件的权限和相应的 Android 角色,请参阅第三方应用的配套设备配置文件。
如需详细了解配套设备,请参阅配套设备配对。
设备行为
本部分介绍了使用配套设备配置文件时的设备行为。
应用会请求创建与配套设备的关联,当用户接受该请求时,CompanionDeviceManager
(CDM) 服务会指定设备配置文件角色(例如手表),从而授予为该配置文件角色定义的所有权限。图 1 中的示例显示了应用请求获取为 COMPANION_DEVICE_WATCH
设备配置文件定义的权限。
图 1. 对话框中显示了应用请求获取为手表设备配置文件定义的权限。
当用户在“设置”中清除软件包数据或在配套应用中移除所有设备时,CDM 会于应用未在前台运行且未运行前台服务时撤消该配置文件。撤消配置文件亦会撤消为该文件定义的所有权限。
用户接受应用的请求,授予为特定设备配置文件定义的权限后,可以撤消授予的各项权限。 用户撤消某项权限时,应用仍与配套设备保持关联,但某些功能可能会变得不可用。如果应用需要该权限才能正常工作,则必须通过正常的权限请求来请求该权限。
第三方应用的配套设备配置文件
手表配置文件
Android 12 中引入了手表配置文件。
下表列出了为 COMPANION_DEVICE_WATCH
设备配置文件定义的权限,以及使用这些权限需要满足的要求。
权限 | 配套应用和设备要求 |
---|---|
通知
POST_NOTIFICATIONS (added in Android 15) |
|
Phone |
|
SMS |
|
Contacts |
|
Calendar |
|
Nearby devices |
|
eSIM provisioning |
|
Managing ongoing calls |
|
眼镜配置文件
Android 14 中引入了眼镜配置文件。
下表列出了为 COMPANION_DEVICE_GLASSES
设备配置文件定义的权限,以及使用这些权限需要满足的要求。
权限 | 配套应用和设备要求 |
---|---|
通知POST_NOTIFICATIONS |
|
Phone |
|
SMS |
|
Contacts |
|
Microphone |
|
Nearby devices |
|
Managing ongoing calls |
|
实现
对于第三方开发者,如要实现请求 DEVICE_PROFILE_WATCH
配置文件的配套应用,请执行以下操作:
调用
setDeviceProfile
方法。在构建
AssociationRequest
时传入配置文件(例如DEVICE_PROFILE_WATCH
)。
设备制造商跳过显示用户意见征求对话框的步骤
对于通过特定设备实现配套应用的设备制造商,请使用以下必需 Android 系统配置对配套应用进行认证,从而使应用可以跳过向用户显示用户意见征求对话框的步骤。
使用以下命令检索证书:
keytool -printcert -jarfile PATH/TO/APK
替换软件包名称和证书,如配置文件中的以下示例输入所示:
<!-- A list of packages managing companion device(s) by the same manufacturers as the main device. It will not create the association without prompting if the association has been called multiple times in a short period. Note that config_companionDeviceManagerPackage and config_companionDeviceCerts are parallel arrays. --> <string-array name="config_companionDevicePackages" translatable="false"> <item>YOUR_COMPANION_APP_PACKAGE_NAME</item> </string-array> <!-- A list of SHA256 Certificates managing companion device(s) by the same manufacturers as the main device. It will fall back to showing a prompt if the association has been called multiple times in a short period. Note that config_companionDeviceCerts and config_companionDeviceManagerPackage are parallel arrays. Example: "1A:2B:3C:4D" --> <string-array name="config_companionDeviceCerts" translatable="false"> <item>YOUR_COMPANION_APP_CERTIFICATE</item> </string-array>
使用
AssociationRequest
向单个配套设备发出关联请求。
验证
如需测试配套设备配置文件功能的行为,请使用 cts/tests/tests/companion/
中的 CTS 测试。