伴侣设备配置文件是在 Android 12 中引入的一项功能,允许伴侣应用请求一组特定于伴侣设备类型的权限,例如智能手表。通过使用伴侣设备配置文件,应用只需向移动设备上的用户显示一个提示,即可请求一组已定义的权限,而无需显示多个提示来单独请求权限,从而简化注册流程。这可以为伴侣应用带来更顺畅的设置体验和更高的选择加入率。
要使用伴侣设备配置文件,伴侣应用必须满足以下要求
- 管理伴侣设备(例如智能手表)。
- 具有需要伴侣设备配置文件定义的所有权限的应用功能或调用 Android API。
每个伴侣设备配置文件都对应一个 Android 角色。如需详细了解每个配置文件的权限和相应的 Android 角色,请参阅第三方应用的伴侣设备配置文件。
如需详细了解伴侣设备,请参阅伴侣设备配对。
设备行为
本部分介绍使用伴侣设备配置文件时的设备行为。
当用户接受应用发出的与伴侣设备建立关联的请求时,CompanionDeviceManager
(CDM) 服务会将设备配置文件角色(例如 watch)分配给伴侣应用,并授予为该指定配置文件角色定义的所有权限。图 1 显示了一个应用请求 COMPANION_DEVICE_WATCH
设备配置文件权限的示例。
图 1. 请求手表设备配置文件权限的对话框。
当用户在“设置”中清除软件包数据或移除伴侣应用中的所有设备时,CDM 会在应用未在前台运行且没有前台服务运行时撤消配置文件。撤消配置文件也会撤消该配置文件的所有已定义权限。
在用户接受应用发出的授予特定设备配置文件权限的请求后,用户可以撤消已授予的单个权限。当权限被用户撤消时,应用仍会与伴侣设备关联,但某些功能可能变得不可用。如果应用需要该权限才能运行,则应用必须通过正常的权限请求来请求该权限。
第三方应用的伴侣设备配置文件
手表配置文件
手表配置文件是在 Android 12 中引入的。
下表描述了为 COMPANION_DEVICE_WATCH
设备配置文件定义的权限以及使用这些权限的要求。
权限 | 伴侣应用和设备要求 |
---|---|
通知POST_NOTIFICATIONS(在 Android 15 中添加) |
|
手机 |
|
短信 |
|
联系人 |
|
日历 |
|
附近的设备 |
|
eSIM 预配置 |
|
管理正在进行的通话 |
|
眼镜配置文件
眼镜配置文件在 Android 14 中引入。
下表描述了为 COMPANION_DEVICE_GLASSES
设备配置文件定义的权限以及使用这些权限的要求。
权限 | 伴侣应用和设备要求 |
---|---|
通知POST_NOTIFICATIONS |
|
手机 |
|
短信 |
|
联系人 |
|
麦克风 |
|
附近的设备 |
|
管理正在进行的通话 |
|
实现
对于实施伴侣应用并请求 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 测试。