Android 7.0 將與通話通知相關的功能從 Android 平台中的電信系統服務移至 Dialer 應用程式。先前,顯示與呼叫相關的通知的責任由 Telecom 和預設的 Dialer 應用程式分開,導致行為不一致。在 Android 7.0 中,撥號器承擔處理呼叫通知的所有責任。
Android 6.x 及更早版本中的行為
在早期的 Android 版本中,Telecom 和 Dialer 的職責劃分如下:
功能性 | 由電信完成 | 由撥號器完成 |
---|---|---|
來電通知 | 是(響鈴、振動) | 有(通知顯示、來電顯示) |
寄至語音信箱 | 是的 | 不 |
自訂鈴聲 | 是的 | 不 |
未接來電通知 | 是的 | 不 |
訊息等待指示器(呼叫語音信箱) | 是(電話) | 不 |
可視語音郵件通知 | 不 | 是的 |
這種責任劃分所導致的不一致行為的例子包括:
- 電信負責啟動鈴聲/振動器,但撥號器負責顯示來電通知。如果撥號程式啟動緩慢,可能會導致在顯示來電通知之前幾秒鐘就開始響鈴。
- 電信負責顯示未接來電通知。由於專有功能(例如 Google 來電顯示)不適用於這些通知,這可能會導致電信通知和撥號器 UI(例如通話記錄)之間不一致。
Android 7.0 及更高版本中的行為
Android 開源專案 (AOSP) 撥號器實現了新功能。詳細資訊請參考以下文件:
- 未接來電通知
電信/src/com/android/server/telecom/ui/MissedCallNotifierImpl.java
撥號器/android/dialer/calllog/MissedCallNotificationReceiver.java
撥號器/android/dialer/calllog/MissedCallNotifier.java - 播放鈴聲:
框架/base/telecomm/java/android/telecom/InCallService.java
電信/src/com/android/server/telecom/InCallController.java
撥號器/java/com/android/incallui/ringtone/
撥號器/java/com/android/incallui/StatusBarNotifier.java - 監測卡通知
框架/base/telephony/java/android/telephony/TelephonyManager.java
電話/src/com/android/phone/PhoneInterfaceManager.java
撥號器/src/com/android/dialer/calllog/DefaultVoicemailNotifier.java
Android 12 或更高版本通話的通知樣式
對於運行 Android 12 或更高版本的設備,為了提供一致的通話用戶體驗,我們建議應用對來電和正在進行的通話使用CallStyle
通知樣式。有關詳細信息,請參閱允許對來電重要性進行排名的新電話呼叫通知。
執行
設備實現者可能需要更新電信/電話組件,這些組件公開可供預設撥號器使用的 API。