Android app that runs on top of ALL other apps?

前端 未结 3 2066
既然无缘
既然无缘 2021-01-31 21:59

Before today I would have said this is just not possible, to have an app that runs overlayed on top of everything else: home screens, apps, dialer, etc.

If you try the f

相关标签:
3条回答
  • 2021-01-31 22:10

    Starting from Android 4.x, Android team Android team fixed a potential security problem by adding a new function adjustWindowParamsLw() in which it will add FLAG_NOT_FOCUSABLE, FLAG_NOT_TOUCHABLE and remove FLAG_WATCH_OUTSIDE_TOUCH flags for TYPE_SYSTEM_OVERLAY window.

    That's TYPE_SYSTEM_OVERLAY window won't receive any touch event on ICS platform and, of course, to use TYPE_SYSTEM_OVERLAY is not workable on ICS or future devices.

    Updated: 2016/5/4 TYPE_TOAST cannot receive touch events on Android 4.0~4.3. It's the same as TYPE_SYSTEM_OVERLAY. On Android 4.4+, TYPE_TOAST removed from the excluded list, so you can also use TYPE_TOAST to receive touch events on Android 4.4+ devices.

    0 讨论(0)
  • 2021-01-31 22:12

    See this:

    Creating a system overlay window (always on top)

    Check the comment section of the accepted answer. You will find link to a working example project.

    ==EDIT==

    Link to the project

    0 讨论(0)
  • 2021-01-31 22:25

    This can be done by a combination of things. The initial button is done by creating a window of type TYPE_SYSTEM_OVERLAY . These windows cannot gain focus, however you can use FLAG_WATCH_OUTSIDE_TOUCH to get touch events and match up the coordinates to realized you've been touched.

    Similarly there is http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#TYPE_SYSTEM_ALERT (And TYPE_SYSTEM_DIALOG).

    Finally, an activity can be created with http://developer.android.com/reference/android/R.style.html#Theme_Translucent (or variants).

    0 讨论(0)
提交回复
热议问题