问题
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
回答1:
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.
回答2:
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.
来源:https://stackoverflow.com/questions/9656185/type-system-overlay-in-ics