It's impossible. According to PhoneApp , the intention to launch InCallScreen is tied to the phoneapp, you have no chance to intercept this. Thus, the screen will be displayed every time.
What you can try to do is notify TelephonyManager when the phone goes to CALL_STATE_RINGING , and then draw your interface only on InCallScreen. It may be possible, but you cannot cancel the call (unsure, but I donβt think so) from your user interface. Also, the state is not set immediately when InCallScreen pops up, it is delayed for several milliseconds.
source share