问题描述
我正在尝试使用以下代码创建覆盖窗口:
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 (将#修改为@)