Reputation: 5528
I want to create a customized popup over the android's incoming call screen where I wish to add information for the user. I want the popup to not disable any clickability from the background so that the user could still answer the call.
I know it is possible since many applications do it, e.g. MeZeZe app:
Some more information:
Would appreciate any help! Thanks
Upvotes: 17
Views: 15658
Reputation: 459
It will not only show the activity on lock screen but will also allow to receive an incoming call behind your activity screen.
@Override
protected 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);
Upvotes: 0
Reputation: 1
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.
Upvotes: 0
Reputation: 2779
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"
Upvotes: 11