Android 12 中引入的配套设备配置文件是一项功能,可让配套应用请求一组特定于配套设备类型(例如智能手表)的权限。通过使用配套设备配置文件,应用可以在移动设备上向用户显示一个提示来请求一组定义的权限,而不是显示多个提示来分别请求各项权限,从而简化注册流程。 这可以精简配套应用的设置体验,提高选择接受率。
配套设备配置文件仅适用于拥有配套设备的设备制造商。配套设备必须符合要求并获得批准,才能使用该功能。
Android 12 中提供以下配套设备配置文件类型:COMPANION_DEVICE_WATCH
。
如需详细了解配套设备,请参阅配套设备配对。
设备行为
本部分介绍了使用配套设备配置文件时的设备行为。
应用会请求创建与配套设备的关联,当用户接受该请求时,CompanionDeviceManager
(CDM) 服务会等待配套设备进行连接。连接时,CDM 会为配套应用指定设备配置文件角色(例如手表),从而授予为该配置文件角色定义的所有权限。图 1 中的示例显示了应用请求获取为 COMPANION_DEVICE_WATCH
设备配置文件定义的权限。
图 1. 对话框中显示了应用请求获取为手表设备配置文件定义的权限。
如果应用与配套设备之间的关联被移除(例如,清除软件包的数据,或忘记设备后),CDM 会撤消应用的设备配置文件角色,这会从应用中移除为该配置文件角色定义的所有权限。
用户接受应用的请求,授予为特定设备配置文件定义的权限后,可以撤消授予的各项权限。 用户撤消某项权限时,应用仍与配套设备保持关联,但某些功能可能会变得不可用。如果应用需要该权限才能正常工作,则必须通过正常的权限请求来请求该权限。
要求
配套应用必须满足以下要求,才能使用配套设备配置文件 API:
- 拥有配套设备(例如智能手表)。
- 有正当的理由来请求为配套设备配置文件定义的权限。
手表配套设备配置文件要求
下表列出了为 COMPANION_DEVICE_WATCH
设备配置文件角色定义的权限,以及使用这些权限需要满足的要求。
权限 | 配套应用和设备要求 |
---|---|
通知BIND_NOTIFICATION_LISTENER_SERVICE |
|
电话phone |
|
短信
sms |
|
联系人
contacts |
|
日历
calendar |
|
附近的设备
nearby_devices |
|
eSIM 卡配置
USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER |
|
管理正在进行的通话
MANAGE_ONGOING_CALLS |
|
获取访问权限
应用必须获得批准,并添加到许可名单中,才能使用配套设备配置文件,而不显示用户意见征求对话框。Android 团队收到将应用添加到许可名单的请求后,会对应用进行审核,确保其符合相应配套设备配置文件的要求。
实现
对于使用特定设备实现配套应用的设备制造商,请使用以下必需的 Android 系统配置对配套应用进行认证,从而使应用可以跳过向用户显示 CDM 提示的步骤。
使用以下命令检索证书:
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
向单个配套设备发出关联请求。
对于第三方开发者,如要实现请求 DEVICE_PROFILE_WATCH
配置文件的配套应用,请执行以下操作:
- 调用
setDeviceProfile
方法。 - 在构建
AssociationRequest
时传入DEVICE_PROFILE_WATCH
配置文件。
验证
如需测试配套设备配置文件功能的行为,请使用 cts/tests/tests/companion/
中的 CTS 测试。