配套设备配置文件

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
  • 成为使用蓝牙和/或 Wi-Fi 的连接设备
  • 具有能够显示通知的屏幕(不包括使用触觉而不是屏幕的设备)
  • 提供面向用户的通知体验,例如,在配套设备屏幕上显示电话通知
电话

phone
  • 成为使用蓝牙和/或 Wi-Fi 的连接设备
  • 具有内置麦克风和扬声器,可实现语音对话
  • 有一个显示来电者信息的屏幕
  • 提供面向用户的电话呼叫体验(配套应用桥接电话)
短信

sms
  • 成为使用蓝牙和/或 Wi-Fi 的连接设备
  • 有一个显示 SMS 消息的屏幕
  • 提供面向用户的短信体验
联系人

contacts
  • 成为使用蓝牙和/或 Wi-Fi 的连接设备
  • 有显示屏
  • 使用联系信息作为通话或消息体验的一部分
日历

calendar
  • 成为使用蓝牙和/或 Wi-Fi 的连接设备
  • 有显示屏
  • 在手表上提供面向用户的日历体验
附近的设备

nearby_devices
  • 成为使用蓝牙和/或 Wi-Fi 的连接设备
  • 有显示屏
  • 在手表上提供面向用户的配对/连接体验
eSIM 配置

USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER
  • 成为使用蓝牙和/或 Wi-Fi 的连接设备
  • 有显示屏
  • 提供面向用户的体验,在手表上管理来自运营商的订户服务
管理正在进行的通话

MANAGE_ONGOING_CALLS
  • 成为使用蓝牙和/或 Wi-Fi 的连接设备
  • 具有内置麦克风和扬声器,可实现语音对话
  • 有一个显示来电者信息的屏幕
  • 提供面向用户的电话呼叫体验(配套应用桥接电话)

获取访问权限

要让应用程序获得对配套设备配置文件的访问权限,它们必须获得批准并添加到许可名单中。收到添加到许可名单的请求后,Android 团队会审核该应用以确保其符合相应配套设备配置文件的要求。

执行

对于在特定设备上实现配套应用程序的设备制造商,请使用以下必需的 Android 系统配置来认证配套应用程序,这允许应用程序跳过向用户显示 CDM 提示。

  1. 使用以下命令检索证书:

    keytool  -printcert -jarfile PATH/TO/APK
    
  2. 替换包名称和证书,如配置文件中的以下示例输入所示:

    <!-- 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>
    
  3. 使用AssociationRequest向单个配套设备发出关联请求。

对于实现请求DEVICE_PROFILE_WATCH配置文件的配套应用程序的第三方开发人员,请执行以下操作:

  1. 调用setDeviceProfile方法。
  2. 在构建AssociationRequestDEVICE_PROFILE_WATCH配置文件。

验证

要测试配套设备配置文件功能的行为,请使用以下 CTS 测试: