在 Android 10 中,電話帳戶建議服務允許在撥打電話時向用戶顯示電話帳戶建議。例如,對於擁有多個 SIM 卡且網內通話費率較低的設備的用戶,此服務首先識別被叫方的運營商,然後建議使用與被叫方位於同一網絡的 SIM 卡。
電話帳戶建議服務是可選的,可以在運行 Android 10 或更高版本的裝置上實現。
執行
若要實施電話帳戶建議,請在位於/system/priv-app/
的應用程式中實施一項PhoneAccountSuggestionService
服務。如果實作了多個PhoneAccountSuggestionService
,則不會查詢該服務。服務必須聲明android.Manifest.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE
權限。
當使用者撥打電話時,被叫方未設定預設呼出電話帳號和首選電話帳號,電信業務會綁定PhoneAccountSuggestionService
收集帳號信息,呼叫onAccountSuggestionRequest(String number)
,並進行呼出程序被暫停。
PhoneAccountSuggestionService
必須使用onAccountSuggestionRequest(String number)
suggestPhoneAccounts(String number, List<PhoneAccountSuggestion> suggestions)
。
當呼叫suggestPhoneAccounts(String number, List<PhoneAccountSuggestion> suggestions)
時,電信服務會傳回建議的電話帳戶清單。然後,撥號器必須顯示建議的電話帳戶列表,以供用戶選擇進行呼叫。
電話帳號建議
若要提出建議,請使用PhoneAccountSuggestion類別。例如,如果服務確定被叫方與設備中的 SIM 卡之一位於同一運營商,則服務應使用REASON_INTRA_CARRIER
標記電話帳戶。然後可以在撥號器中將該資訊傳送給使用者。
例如,在使用者已將裝置配置為對 Google 工作帳戶中的所有聯絡人使用工作 SIM 卡的情況下,服務應使用REASON_USER_SET
標記電話帳戶並將shouldAutoSelect
設為 true 以允許撥號程式繞過選擇對話方塊並使用電話帳號自動撥打電話。
有關其他建議的信息,請參閱PhoneAccountSuggestion
。
撥號器
當呼叫進入STATE_SELECT_PHONE_ACCOUNT
狀態時,撥號程式必須使用PhoneAccountSuggestion
中的資訊來處理EXTRA_SUGGESTED_PHONE_ACCOUNTS
。
禁用服務
若要為特定電信商自訂實施,您可以使用setComponentEnabledSetting
啟用或停用該服務。如果停用,則不會查詢該服務。
系統UI實現
根據您的實作情況,可能需要變更系統 UI。例如,若要允許使用者指定對特定聯絡人的所有通話均透過特定電話帳戶進行,您必須為裝置實作自訂設定流程和設定 UI。
驗證
若要驗證您的實施,請執行以下 CTS 測試:
-
/cts/tests/tests/telecom/src/android/telecom/cts/PhoneAccountSuggestionServiceTest.java
-
/cts/tests/tests/telecom/src/android/telecom/cts/PhoneAccountSuggestionTest.java