Android 7.0 將與通話通知相關的功能從 Android 平台的電信系統服務移至撥號程式應用程式。先前,顯示與通話相關通知的責任分散在電信和預設撥號程式應用程式之間,導致行為不一致。在 Android 7.0 中,撥號應用程式會負責處理所有通話通知。
Android 6.x 以下版本的行為
在舊版 Android 版本中,Telecom 和 Dialer 的職責分工如下所述:
功能 | 由電信公司完成 | 由撥號程式完成 |
---|---|---|
來電通知 | 是 (鈴聲、震動) | 是 (通知顯示、來電顯示) |
轉入語音信箱 | 是 | 否 |
自訂鈴聲 | 是 | 否 |
未接來電通知 | 是 | 否 |
待處理訊息指標 (撥打語音留言服務) | 是 (電信) | 否 |
視覺化語音信箱通知 | 否 | 是 |
這項責任分割作業造成的行為不一致情形包括:
- Telecom 負責啟動鈴聲/震動器,但撥號程式負責顯示來電通知。如果撥號程式啟動速度緩慢,可能會導致鈴聲在顯示來電通知前幾秒就開始響起。
- 電信業者負責顯示未接來電通知。由於專屬功能 (例如 Google 來電者 ID) 無法在這些通知中運作,因此可能會導致電信通知和撥號應用程式介面 (例如通話記錄) 之間出現不一致的情形。
Android 7.0 以上版本的行為
Android 開放原始碼計畫 (AOSP) 撥號應用程式會實作新功能。詳情請參閱以下說明文件:
- 未接來電通知
Telecom/src/com/android/server/telecom/ui/MissedCallNotifierImpl.java
Dialer/android/dialer/calllog/MissedCallNotificationReceiver.java
Dialer/android/dialer/calllog/MissedCallNotifier.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/StatusBarNotifier.java - 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
通知樣式,用於顯示來電和通話中狀態。詳情請參閱
新款電話通知功能,可讓您將來電的重要性排序。
實作
裝置導入者可能需要更新 Telecom/Telephony 元件,以便公開可供預設撥號應用程式使用的 API。