overlay窗口类型\应用程序\ overlay无法按预期工作

1tuwyuhd  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(279)

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

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版本到androidq都能正常工作。但是q和r版本的工作方式不同。覆盖窗口创建,通过一些活动和其他应用程序保持。它甚至能坚持到底 Android Settings 但当我试着打开比 Android Settings ,例如 Usage Data Access 屏幕或 App Data 屏幕上,覆盖窗口消失。如果我按 Back button 它将显示上一个活动,覆盖窗口将再次显示。
有人知道如何“修复”它,并实现所有android版本的相同行为吗?任何帮助都将不胜感激。提前谢谢。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题