Incallui ~upd~ Jun 2026
Use adb shell dumpsys telecom and look for InCallController . If you see mIsBound = false while a call is active, your UI has crashed silently.
public CallControlButtons(Context context) { super(context); init(context); }
If the phone still rings but you can't see the UI, you've replicated a core Telecom bug. incallui
CallInfoCard callInfoCard = findViewById(R.id.call_info_card); callInfoCard.setCallInfo("John Doe", "123-456-7890", "00:01");
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. Use adb shell dumpsys telecom and look for InCallController
public CallInfoCard(Context context, AttributeSet attrs) { super(context, attrs); init(context); }
Automatically disabling the touchscreen when the phone is near your ear to prevent accidental "pocket" touches . CallInfoCard callInfoCard = findViewById(R
Yes, InCallUI is a safe and essential component of the Android operating system. It acts as the bridge between the phone's dialer application and the hardware actions (like turning on the speaker). You cannot uninstall it, as doing so would prevent you from being able to see your screen or press buttons while talking to someone.
public CallInfoCard(Context context) { super(context); init(context); }
If you’ve ever built a VoIP or carrier-grade calling app for Android, you’ve likely cursed the black box known as . 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.
InCallUI is not the same as your dialer’s main activity. Your dialer app contains the call log and contact search, but the in-call screen is a separate activity that only starts when Telecom broadcasts an InCallService intent.