Android 9 提供 API,可更完善地支援第三方通話應用程式。第三方通話應用程式通常會依賴電話 API (例如 PHONE_STATE
廣播),與電信業者電話通話並存。因此,第三方通話應用程式必須優先處理電信業者通話,並經常在應用程式中默默拒絕來電,或終止進行中的通話,以便接聽電信業者通話。
Android 9 中的 API 支援第三方應用程式與電信業者通話之間的並行通話情境。舉例來說,這樣一來,您在進行電信業者通話時,就能接聽第三方來電。架構會負責確保使用者進行第三方通話時,保留電信業者通話。
在 Android 9 中,建議第三方通話應用程式實作自行管理的 ConnectionService
API。如要進一步瞭解如何使用這項 API 建構通話應用程式,請參閱「建構通話應用程式」。
開發人員也可以透過自行管理的 ConnectionService
API,選擇將應用程式中的通話記錄在系統通話記錄中 (請參閱 EXTRA_LOG_SELF_MANAGED_CALLS
)。根據《Android 相容性定義文件 (CDD)》(第 7.4.1.2 節) 的規定,您應確保撥號程式或電話應用程式會顯示這些通話記錄項目,並顯示通話來源的第三方通話應用程式名稱 (如要瞭解 AOSP 撥號程式應用程式如何符合這項規定,請參閱「第三方通話應用程式的通話記錄項目」)。
應用程式必須負責在應用程式連線上設定
CAPABILITY_SUPPORT_HOLD
和
CAPABILITY_HOLD
。不過,在某些情況下,應用程式可能無法保留通話。架構包含解決這類案件的規定。
情況
您應修改撥號器應用程式,以處理下列情境。
處理會中斷進行中通話的來電
如果使用者正在進行不支援暫停的第三方通話 (例如 SuperCaller 通話),且收到行動電話來電 (例如使用 FooCom 電信業者),則撥號或電話應用程式應向使用者指出,接聽行動網路電話會結束進行中的第三方通話。
這項使用者體驗非常重要,因為第三方通話應用程式可能正在進行通話,但架構無法保留通話。接聽新的行動電話來電時,系統會中斷進行中的第三方通話。
如需範例,請參閱圖中的使用者介面:
圖 1. 來電中斷進行中的第三方通話。
撥號器應用程式可以檢查通話額外資訊,判斷來電是否導致其他通話中斷。確認 EXTRA_ANSWERING_DROPS_FG_CALL
設為 TRUE
,且 EXTRA_ANSWERING_DROPS_FG_CALL_APP_NAME
設為應用程式名稱。當您接聽來電時,系統會中斷該應用程式的通話。
第三方通話應用程式的通話記錄項目
第三方通話應用程式的開發人員可以選擇將應用程式中的通話記錄在系統通話記錄中 (請參閱 EXTRA_LOG_SELF_MANAGED_CALLS
)。
這表示通話記錄中可能會有行動網路通話以外的項目。
當 AOSP 撥號應用程式顯示與第三方通話應用程式相關的通話記錄項目時,通話記錄中會顯示通話發生的應用程式名稱,如圖所示:
圖 2. 撥號應用程式中的通話記錄項目,顯示第三方通話應用程式的名稱。
如要判斷與通話記錄項目相關聯的應用程式名稱,請使用通話記錄供應商中的 PHONE_ACCOUNT_COMPONENT_NAME
和 PHONE_ACCOUNT_ID
欄建立 PhoneAccountHandle
的例項,這會識別通話記錄項目的來源。查詢 TelecomManager
即可取得 PhoneAccount 的詳細資料。
如要判斷通話記錄項目是否來自第三方通話應用程式,請檢查 PhoneAccount
功能 ,確認是否已設定 CAPABILITY_SELF_MANAGED
。
傳回的 PhoneAccount
的 getLabel
方法會傳回與第三方通話應用程式的通話記錄項目相關聯的應用程式名稱。
驗證
如要測試裝置是否支援第三方通話應用程式,請使用 Telecomm 測試應用程式,該應用程式會實作自行管理的 ConnectionService API。應用程式位於 /packages/services/Telecomm/testapps/
。
使用下列指令,從 Android 原始碼存放區的根目錄建構測試應用程式:
mmma packages/services/Telecomm/testapps/
使用
adb install -g -r <apk path>
安裝建構 APK。啟動器會新增「自行管理」範例圖示。輕觸圖示即可開啟測試應用程式。
處理會中斷進行中通話的來電
請按照下列步驟操作,確認來電會中斷進行中的第三方通話。
圖 3. 使用 ConnectionService API 的範例實作項目測試應用程式。
- 清除「可保留」選項。
- 輕觸「OUTGOING」(外撥),開始新的外撥通話範例。
- 輕觸「ACTIVE」按鈕,即可接聽通話。
- 使用其他手機撥打要測試的裝置電話號碼。這會叫用撥號器,並提供應用程式名稱,導致通話中斷。
- 完成後,請輕觸測試應用程式中的「DISCONNECT」按鈕。
第三方通話應用程式的通話記錄項目
完成上述步驟後,測試應用程式應該已將呼叫記錄到系統呼叫記錄中。如要確認裝置是否記錄第三方通話應用程式的通話,請開啟撥號應用程式,並確認通話記錄中是否顯示該通話。