重叠式窗口TYPE_APPLICATION_OVERLAY无法正常工作

问题描述

我正在尝试使用以下代码创建覆盖窗口:

int OVERLAY_TYPE;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    OVERLAY_TYPE = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
} else {
    OVERLAY_TYPE = WindowManager.LayoutParams.TYPE_PHONE;
}

WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);

ImageView popupView = new ImageView(this);
popupView.setimageResource(R.drawable.bottom_dialog_background);

WindowManager.LayoutParams params = new WindowManager.LayoutParams(
        WindowManager.LayoutParams.WRAP_CONTENT,WindowManager.LayoutParams.WRAP_CONTENT,OVERLAY_TYPE,WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,PixelFormat.TRANSLUCENT);

params.gravity = Gravity.BottOM;

windowManager.addView(popupView,params);

我已将<uses-permission android:name="android.permission.SYstem_ALERT_WINDOW" />添加Manifest并允许所有必要的权限。

它对于高达Android Q的Android版本都可以正常工作。但是Q和R版本的工作方式不同。叠加窗口会创建并在某些活动和其他应用中保持不变。它甚至持续到Android Settings,但是当我尝试打开比Android Settings更深的内容时,例如Usage Data Access屏幕或App Data屏幕,覆盖窗口消失了。如果我按Back button,它将显示一个活动,并且覆盖窗口将再次显示

有人知道如何“修复”它并针对所有Android版本实现相同的行为吗? 任何帮助将不胜感激。预先感谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)