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)
我创建了一个空 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)