Android 7.0 會將 Android 平台的「電話」系統服務中來電通知相關功能移至「撥號」應用程式。過去,顯示通話相關通知的責任是在電信和預設的「撥號」應用程式之間劃分,造成行為不一致。在 Android 7.0 中,撥號程式會承擔處理來電通知的所有責任。
Android 6.x 以下版本的行為
在早期的 Android 版本中,電信和撥號程式的分割責任如下:
功能 | 完成電信業 | 由撥號程式完成 |
---|---|---|
來電通知 | 是 (響鈴、震動) | 是 (顯示通知、來電顯示) |
轉入語音信箱 | 可 | 否 |
自訂鈴聲 | 可 | 否 |
未接來電通知 | 可 | 否 |
訊息等待指標 (撥打語音信箱) | 是 (電話) | 否 |
視覺化語音信箱通知 | 否 | 可 |
由此責任分割造成的不一致行為範例,包括:
- 電話是負責啟動鈴聲/震動器,但撥號程式負責顯示來電通知。如果撥號程式的啟動速度緩慢,可能會導致系統啟動來電通知數秒,最後才顯示來電通知。
- 未接來電通知是由電信公司顯示。由於專屬功能 (例如 Google 來電顯示) 不適用於這類通知,因此可能會導致電話通知和撥號 UI (例如通話記錄) 不一致。
Android 7.0 以上版本的行為
Android 開放原始碼計畫 (AOSP) 撥號程式已導入新功能。詳情請參閱以下說明文件:
- 未接來電通知
Telecom/src/com/android/server/telecom/ui/MissedCallNotifierImpl.java
Dialer/android/dialer/calllog/MissedCallNotificationReceiver.java
Dialer/android/dialer/calllogReceiver.java
Dialer/android/dialer/calllogReceiver.java - 播放鈴聲:
frameworks/base/telecomm/java/android/telecom/InCallService.java
Telecom/src/com/android/server/telecom/InCallController.java
Dialer/java/com/android/incallui/ringtone/
Dialer/java/com/android/incallui/Statusifier - VVM 通知
frameworks/base/telephony/java/android/telephony/TelephonyManager.java
Telephony/src/com/android/phone/PhoneInterfaceManager.java
Dialer/src/com/android/dialer/calllog/DefaultVoicemailNotifier.java
Android 12 以上版本中的來電通知樣式
如果裝置搭載 Android 12 以上版本,以便為來電提供一致的使用者體驗,建議應用程式針對來電和進行中的通話使用
CallStyle
通知樣式。詳情請參閱「
新來電通知用於決定來電排名的重要性」。
導入作業
裝置實作者可能需要更新電信/電話元件,讓該元件公開預設撥號程式可以使用的 API。