Android 7.0 moves functionality related to call notifications from the Telecom system service in the Android platform to the Dialer app. Previously, the responsibility for displaying call-related notifications was split between Telecom and the default Dialer app, creating inconsistencies in behavior. In Android 7.0, the Dialer assumes all responsibility for handling call notifications.
Behavior in Android 6.x and lower
In earlier Android releases, Telecom and Dialer split responsibilities as described below:
Functionality | Done by Telecom | Done by Dialer |
---|---|---|
Incoming call notification | Yes (ringing, vibrate) | Yes (notification display, caller ID) |
Send to voicemail | Yes | No |
Custom ringtone | Yes | No |
Missed call notifications | Yes | No |
Message Waiting Indicator (call voicemail) | Yes (telephony) | No |
Visual voicemail notifications | No | Yes |
Examples of inconsistent behavior caused by this responsibility split included:
- Telecom was responsible for starting the ringer/vibrator, but the dialer was responsible for displaying the incoming call notification. If the dialer is slow to startup, this can result in ringing starting several seconds before the incoming call notification is displayed.
- Telecom was responsible for displaying missed call notifications. As proprietary features (such as Google caller ID) do not work on these notifications, this could result in inconsistencies between Telecom notifications and Dialer UI (such as the call log).
Behavior in Android 7.0 and higher
The Android Open Source Project (AOSP) Dialer implements the new functionality. For details, refer to the following documentation:
- Missed call notifications
Telecom/src/com/android/server/telecom/ui/MissedCallNotifierImpl.java
Dialer/android/dialer/calllog/MissedCallNotificationReceiver.java
Dialer/android/dialer/calllog/MissedCallNotifier.java - Playing ringtones:
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 notifications
frameworks/base/telephony/java/android/telephony/TelephonyManager.java
Telephony/src/com/android/phone/PhoneInterfaceManager.java
Dialer/src/com/android/dialer/calllog/DefaultVoicemailNotifier.java
Notification style for calls in Android 12 or higher
For devices running Android 12 or higher, to provide
a consistent user experience for calls, we recommend that apps use the
CallStyle
notification style for incoming and ongoing calls.
For more information, see
New phone call notifications allowing for ranking importance of incoming
calls.
Implementation
Device implementers may need to update Telecom/Telephony components that expose APIs available for use by the default Dialer.