Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

TYPE_SYSTEM_OVERLAY in ICS

In Honeycomb I was able to create a system overlay with TYPE_SYSTEM_OVERLAY and receive touches with FLAG_WATCH_OUTSIDE_TOUCH.

Now ICS has changed something. I can still create the system overlay, but i can't get touches.

Now, i am able to create the same with TYPE_SYSTEM_ALERT and get touches, but it just catches the touchevents, and not passing them on like in Honeycomb.

Any idea's?

Kind regards

like image 730
Edwin Schriek Avatar asked Mar 11 '12 15:03

Edwin Schriek


2 Answers

To create an overlay view, when setting up the LayoutParams DON'T set the type to TYPE_SYSTEM_OVERLAY.

Instead set it to TYPE_PHONE.

Use the following flags:

FLAG_NOT_TOUCH_MODAL

FLAG_WATCH_OUTSIDE_TOUCH

FLAG_NOT_TOUCH_MODAL << I found this one to be quite important. Without it, focus is given to the overlay and soft-key (home, menu, etc.) presses are not passed to the activity below.

like image 101
jawsware Avatar answered Oct 29 '22 11:10

jawsware


Everything you describe is true. It is presumably to tighten up security, as the former behavior was the source of tapjacking attacks. I wrote a blog post recently about this change.

Any idea's?

Don't use either of them.

like image 35
CommonsWare Avatar answered Oct 29 '22 13:10

CommonsWare