
Posted by Nataraj KR, Android Developer Relations Engineer
The initial launch of the Jetpack Telecom library introduced CallsManager, replacing the legacy ConnectionService API to simplify VoIP integration. CallsManager streamlines call lifecycle management and audio routing while enabling interactions with remote surfaces like smartwatches, Bluetooth devices, and Android Auto. Additionally, it supports call extensions for richer features—such as participant handling, custom icons, call silencing and meeting summary on remote surfaces—all while maintaining backward compatibility down to Android O (API Level 26).
Building on this foundation, Jetpack Telecom v1.1.0 brings native-level visibility and convenience to third-party VoIP apps. This latest release introduces powerful new capabilities, including unified call history, call log exclusion, and native callback functionality, making call management more seamless than ever for users.
Here is a closer look at what’s new and how you can implement these features in your applications.
Bridging the Dialer Gap: Unified Call History and Callbacks
Historically, users have had to open individual third-party apps to view their VoIP call history or return a missed call. With the new integrated call logging feature, system dialer apps can now surface call logs directly from third-party VoIP apps.
Even better, users can now initiate a callback to a VoIP contact straight from their native system dialer, streamlining the communication experience.
How it works:
To opt-in to this feature, do the following:
- Register for Callbacks: Your VoIP app must register a new system-protected intent:
TelecomManager.ACTION_CALL_BACK. - Log the Call: Use
TelecomManager.addCall(or related Jetpack APIs) to ensure the system automatically logs the call. - Manage Call IDs: When a call is registered,
CallControlScope.getCallIdprovides a unique UUID. The system dialer uses this exactTelecomManager.EXTRA_UUIDwhen creating the callback intent. - Initiate the Callback: Your application must store and manage the call details associated with this UUID. When the system dialer fires the callback intent with the
EXTRA_UUID, your app can seamlessly resolve the ID and initiate the call with the correct details.
Fine-Grained Control: Call Log Exclusion
We recognize that not every VoIP call should be visible in the system’s native dialer history. Whether for privacy reasons, ephemeral communication, or app-specific behavior, you need control over what gets surfaced.
To address this, we are introducing Call Log Exclusion. You can now prevent specific calls from being logged into the system call logs by setting the isLogExcluded boolean to true within CallAttributesCompat. By configuring this flag, the call remains completely hidden from the system logs, and the native dialer will not display it.
Important Note on Compatibility
These integrated logging and callback features are available for devices running Android 16.1 (SDK 36.1) and higher. Refer here to compile your app with Android SDK 36.1.
Get Started
We encourage developers to test these integrations and explore how unified call history and callbacks can improve the daily user experience of your VoIP applications.
To help you get started and see these APIs in action, we have put together a sample application demonstrating the new integrations.
View the sample app here: https://github.com/android/platform-samples/tree/main/samples/connectivity/telecom
Check out the release notes and documentation to start implementing these features today!
Note: Although Jetpack Telecom v1.1.0 APIs are accessible for integration, the system dialer’s ability to render native call logs is being introduced in phases, beginning with Google Meet. To safeguard against spam, native dialers utilize secure package allowlists to control VoIP display. For local testing of your callback and logging implementations, we recommend using the open-source Telecom Sample Dialer app as your emulator environment.

