I saw an app that overlays whole screen including nav bar (or soft-key that has back, home, etc.) today. it's CF.Lumen(requires android 4.4+) by chainfire.
I just remembered this is NOT POSSIBLE on general approach and many SO answers told me. So I looked down smali codes from Lumens apk(sorry chainfire), found 0x7d6
as type specifier, which is TYPE_SYSTEM_OVERLAY
.
In general, this makes a view overlays on top of lock screen. It looks good however it won't overlays nav bar area. even on lock screen.
I did replacing MATCH_PARENT
to 9999
but it still won't overlays nav bar area.
I looked down the source code of Android, found interesting that has more types undocumented.
FIRST_SYSTEM_WINDOW = 2000;
TYPE_NAVIGATION_BAR = FIRST_SYSTEM_WINDOW+19;
TYPE_BOOT_PROGRESS = FIRST_SYSTEM_WINDOW+21;
I applied these to my app but got crashe says permission denied. It requires INTERNAL_SYSTEM_WINDOW
OR something more undocumented than SYSTEM_ALERT_WINDOW
. those permissions are granted for system apps only.
here's my code to add a view fills whole screen except nav bar area.
What should I do to acomplish it?(make overlay including nav bar area)
final WindowManager.LayoutParams paramsRL = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_FULLSCREEN
| WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
| WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
| WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
PixelFormat.TRANSLUCENT);
windowManager.addView(view_floating, paramsRL);