Popup over incoming-call screen Popup over incoming-call screen android android

Popup over incoming-call screen


If you want to keep the Call activity still clickable, but not have any controls on your overlay, you can do this by calling

getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);

In the onCreate() method of the activity that is shown over the call.

The layout parameters useable together with this are:

android:windowBackground="@android:color/transparent" android:windowIsTranslucent="true" android:windowAnimationStyle="@android:style/Animation.Translucent"


This worked for me with a few additions:

In the BroadcastReceiver I added the following lines to the intent:

        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);        i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

Furthermore, I added a delay of roughly 1.5 seconds before I fire PopupWindow activity to make sure it is coming after the incoming call system screen.

In the Manifest file I added:

<activity android:name=".PopUpIncomingCallActivity"           android:theme="@android:style/Theme.Translucent"></activity>

to make sure that the layout of the Popup screen is translucent.

In the Popupscreen layout xml file I added the following propperties:

    android:windowAnimationStyle="@android:style/Animation.Translucent"    android:windowBackground="@android:color/transparent"    android:windowIsTranslucent="true"

However this solution still has a drawback:

The Popup screen appears above the incoming call system screen and therefore a user has to perform an action (such as clicking a button, pressing a key or touching the screen) to close the Popup screen, as the incoming call screen remains underneath and is not accessible until the popup screen is closed.


It will not only show the activity on lock screen but will also allow to receive an incoming call behind your activity screen.

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    final Window win = getWindow();    win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED            | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);    win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON            | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);    win.addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);    setContentView(R.layout.activity_main);