Call notifications

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:

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.