android: 显示来自服务的对话框

android: show dialog from service

我创建了一个空 activity 以仅显示一个名为 DialogActivity 的对话框。

我有一个尾巴服务,它通过像这样向 DialogActivity 发送一个意图来显示一个对话框:

startActivity(new Intent(this, DialogActivity.class).setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
                                          .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));

当应用程序关闭时,它可以正常工作,但是当我打开它并按主页按钮然后打开对话框(从尾部按钮)时,它首先显示主要 activity 然后打开对话框

最后我发现我最好的答案是使用 WindowManager 而不是开始一个新的 activity ,kotlin 代码:

val wm = applicationContext.getSystemService(WINDOW_SERVICE) as WindowManager
        val params = WindowManager.LayoutParams(
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
            WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, PixelFormat.RGBA_8888
        )
        params.windowAnimations = android.R.style.Animation_Translucent

然后膨胀并通过以下方式向 wm 添加视图:

wm.addView(view, params)