Android 12 中引入的配套设备配置文件是一项功能,它允许配套应用程序请求一组特定于配套设备类型的权限,例如智能手表。使用配套设备配置文件通过允许应用程序向其移动设备上的用户显示单个提示来请求一组定义的权限而不是多个提示单独请求权限,从而简化了注册过程。这可以为配套应用程序提供更简化的设置体验和更好的选择加入率。
配套设备配置文件的使用仅适用于拥有配套设备的设备制造商。要让配套设备访问该功能,它们必须满足要求并获得批准。
Android 12 中提供了以下配套设备配置文件类型: COMPANION_DEVICE_WATCH
。
有关配套设备的更多信息,请参阅配套设备配对。
设备行为
本节介绍使用配套设备配置文件时的设备行为。
当用户接受应用程序创建与配套设备关联的请求时, CompanionDeviceManager
(CDM) 服务会等待配套设备连接,当它连接时,CDM 会将设备配置文件角色(例如,watch)分配给配套应用程序,授予为该指定配置文件角色定义的所有权限。图 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 团队会审核该应用以确保其符合相应配套设备配置文件的要求。
GMS 合作伙伴:
合作伙伴可以联系其 Google 客户经理,请求将配套应用添加到许可名单中。
执行
对于在特定设备上实现配套应用程序的设备制造商,请使用以下必需的 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_COMAPNION_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 测试: