配套設備配置文件

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 測試: