我正在尝试使用以下代码创建覆盖窗口:
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版本的相同行为吗?任何帮助都将不胜感激。提前谢谢。
暂无答案!
目前还没有任何答案,快来回答吧!