有没有一种方法可以在任何android应用程序之上绘制覆盖窗口?在Android系统中绘制覆盖图(系统范围)
我正在使用Android x86端口并拥有系统权限。
@编辑:覆盖下面的视图应该会收到所有事件。
有没有一种方法可以在任何android应用程序之上绘制覆盖窗口?在Android系统中绘制覆盖图(系统范围)
我正在使用Android x86端口并拥有系统权限。
@编辑:覆盖下面的视图应该会收到所有事件。
这是可能做到这一点通过创建一个Service
,增加了当前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;
}
}
但你需要这个额外的权限:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
然后就是登记服务清单:
<service android:name=".OverlayService" ></service>
and st艺术它:
startService(new Intent(this, OverlayService.class));
AFAIK在SDK中没有合法的方式来做到这一点。然而市场上的一些应用程序已经设法完成了它。 如果你确实找到一种方法,我不会指望它永远在工作,他们选择不包含一个公开的API为此有效的安全原因。 – FoamyGuy
不适用于Android市场。我想修改Android本身。 – Friedrich