Draw Overlay on Android (in system)

Is there any way to always draw an overlay on top of any Android app?

I use x86 x86 port and have system rights.

@Edit: the view under the overlay should receive all events.

+4
source share
1 answer

This can be done by creating a Service that adds a view to the current WindowManager :

 public class OverlayService extends Service { @Override public void onCreate() { super.onCreate(); WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); View overlay = /* create your overlay here */; WindowManager.LayoutParams params = new WindowManager.LayoutParams( WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, PixelFormat.TRANSLUCENT); windowManager.addView(overlay , params); } @Override public IBinder onBind(Intent intent) { return null; } } 

But you need this extra permission:

 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> 

And then just register the service in the manifest:

 <service android:name=".OverlayService" ></service> 

and run it:

 startService(new Intent(this, OverlayService.class)); 
+8
source

Source: https://habr.com/ru/post/1445542/


All Articles