在 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
如要提供建議,請使用 PhoneAccountSuggestion 類別。舉例來說,如果服務判斷來電者與裝置中其中一個 SIM 卡使用相同電信業者,服務應使用 REASON_INTRA_CARRIER
標記電話帳戶。系統就能在撥號應用程式中向使用者傳達這項資訊。
舉例來說,如果使用者已將裝置設定為使用工作 SIM 卡,以便與工作 Google 帳戶中的所有聯絡人通訊,服務應將電話帳戶標示為 REASON_USER_SET
,並將 shouldAutoSelect
設為 true,讓撥號程式略過選取對話方塊,並自動使用電話帳戶撥打電話。
如要瞭解其他建議,請參閱 PhoneAccountSuggestion
。
Dialer
當通話進入 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