Incallui Now

Trying to overlay a Dialog on top of the system InCallUI. This never works reliably due to SYSTEM_ALERT_WINDOW restrictions and the fact that the system InCallUI has the highest priority ( TYPE_APPLICATION_OVERLAY is lower than TYPE_PHONE ).

Use adb shell dumpsys telecom and look for InCallController . If you see mIsBound = false while a call is active, your UI has crashed silently. Customizing InCallUI (The Right Way) Let’s say you're building a VoIP app (like WhatsApp or Signal). You don't want to replace the system dialer. You want your own call screen inside your app. incallui

The InCallUI activity requires an absurdly fast start-up time. Telecom starts a "warm-up" process pre-emptively. If your InCallActivity takes longer than ~200ms to inflate its layout or bind to InCallService , the system times out. The call connects, but the UI never appears. Trying to overlay a Dialog on top of the system InCallUI

Now, your Android tablet can show an InCallUI for a call active on your phone. This is implemented via a new InCallService extension that proxies touch events (mute, speaker) back to the phone over Bluetooth LE. If you see mIsBound = false while a

If you’ve ever built a VoIP or carrier-grade calling app for Android, you’ve likely cursed the black box known as InCallUI . It’s the system-level interface that pops up when you receive or make a phone call—the screen with the accept, decline, speakerphone, and keypad buttons.

But here’s the catch: For a long time, InCallUI was a tightly guarded, OEM-specific application. With the introduction of the Telecom framework and ConnectionService APIs, Google attempted to standardize it. Yet, the reality remains messy.

adb shell am force-stop com.android.dialer adb shell am start -a android.intent.action.ANSWER If the phone still rings but you can't see the UI, you've replicated a core Telecom bug. With Android 14, Google doubled down on "cross-device calling" (Call Streaming). This introduces a new layer: RemoteInCallService .