網域選取服務

搭載 Android 15 以上版本的裝置: 實作網域選擇 測試 IMS 服務和舊版服務。 DomainSelectionService 系統 API。DomainSelectionService 是 Android 平台和供應商 網域選擇實作。這個介面可讓供應商導入 提供訊號資訊,例如撥出電話和簡訊的網域 以及網路類型偏好設定 (位於網路掃描中)。

網域選擇-架構

圖 1. 網域選擇功能的架構圖

範例和來源

Android 針對以下項目提供參考實作: 前往 TelephonyDomainSelectionService 查看 Android 開放原始碼計畫。如需詳細 DomainSelectionService API 說明文件,請參閱 DomainSelectionService 和 API 中的其他類別。

實作

如要在 Android 裝置上實作網域選取功能,請按照下列步驟操作: 以下為必要步驟:

  1. 建立網域選取應用程式。服務必須在 AndroidManifest.xml 檔案。

  2. 在裝置疊加中新增設定,讓平台繫結至 DomainSelectionService 實作。

  3. 支援網域選取功能所需的無線電 HAL 介面。

本節將進一步說明這些步驟。

在 AndroidManifest.xml 中新增服務項目

用於註冊 DomainSelectionService 服務的網域選取應用程式 與架構互動,請使用下列程式碼,在資訊清單檔案中新增服務項目 格式:

<service
     android:name="com.example.domainselection.DomainSelectionService"
     android:directBootAware="true"
     android:persistent="true"
     …
     android:permission="android.permission.BIND_DOMAIN_SELECTION_SERVICE"
     …
    <intent-filter>
        <action android:name="android.telephony.DomainSelectionService"/>
    </intent-filter>
    …
</service>

AndroidManifest.xml 中的服務定義必須定義下列項目 屬性,以便執行網域選擇功能。

  • directBootAware="true":讓使用者找到服務並執行 電話。服務無法存取 裝置加密儲存空間後,使用者才會解鎖裝置。如要 資訊 請參閱支援直接啟動模式檔案型加密

  • persistent="true":讓服務持續執行,而非 藉此取回記憶體。只有在 是以系統應用程式形式建構而成

  • permission="android.permission.BIND_DOMAIN_SELECTION_SERVICE":會 只有具有 BIND_DOMAIN_SELECTION_SERVICE 權限的程序 該程式可繫結至應用程式。這可避免惡意應用程式繫結至 因為只有系統應用程式才能藉由 這個架構的重點在於

服務也必須使用intent-filter android.telephony.DomainSelectionService 動作。讓架構 DomainSelectionService 服務。

定義裝置疊加畫面中的設定

如要讓平台安全繫結至 DomainSelectionService 服務,請新增 以下設定至裝置疊加:

因為 Android 不支援具有第三方可下載的應用程式 DomainSelectionService 實作項目,網域選取應用程式必須是 位於 /system_ext/priv-app//product/priv-app/ 的系統應用程式 資料夾。架構會驗證實作項目的套件名稱 比對裝置重疊值,可確保使用者只取得可信任的預先安裝應用程式 繫結。

支援無線電 HAL 介面

如要啟用網域選取功能,請支援下列必要的無線電 HAL 介面:

  • IRadioNetwork

    void setEmergencyMode(int serial, EmergencyMode emcModeType);
    void triggerEmergencyNetworkScan(int serial,
            EmergencyNetworkScanTrigger request);
    void cancelEmergencyNetworkScan(int serial, boolean resetScan);
    void exitEmergencyMode(int serial);
    
  • IRadioNetworkIndication

    void emergencyNetworkScanResult(RadioIndicationType type,
            EmergencyRegResult result);
    

驗證

測試電話通訊架構能否正確回應 請在 DomainSelectionService 介面上執行 CTS 測試, DomainSelectionServiceTestOnMockModem