我正在定制android ROM。我正在更改我的活动的z顺序以显示上面的类型对话框(TYPE_SYSTEM_DIALOG)。
这意味着,当对话框(TYPE_SYSTEM_DIALOG)已经显示并且我获得广播意图以启动另一个活动时。此新活动应显示在该对话框的顶部。我在WindowManager.java中交换了TYPE_SYSTEM_DIALOG和TYPE_PRIORITY_PHONE的值。现在在我的活动的创造中我把
getWindow()的setType(WindowManager.LayoutParams.TYPE_PRIORITY_PHONE)。
但是当我跑步时我仍然没有看到这种新类型。 然后我检查了PhoneWindowManager.java的windowTypeToLayerLw()。我还交换了这两个标志的值。但它不起作用。我错过了什么吗?。请帮助我。
答案 0 :(得分:0)
在我的情况下,我用普通对话框替换了所有系统对话框,但也许这不是你想要的结果。 我假设您希望在系统对话框之上运行特定活动,而不是所有活动(因为否则您会遇到一些严重的问题,包括Dialogs,PopupWindows等根本不会显示)。 我们假设您的活动包名为“com.package.com” 我会做什么:
1)请勿将TYPE_SYSTEM_DIALOG
替换为TYPE_PRIORITY_PHONE
。保持原始价值。
2)在WindowManagerGlobal.addView(View, params)
中执行以下操作:
一个。如果添加的当前视图与params.type=TYPE_APPLICATION
一起添加,则继续b。
湾检查params.packageName=="com.package.com"
- 如果它们相等则继续c。
℃。分配:params.type=TYPE_SYSTEM_OVERLAY
虽然很简单但是活动必须作为系统进程运行。否则你将无法使用任何“特殊”窗口(这可能是你的解决方案不起作用的原因)。
我还没有测试过,但这应该可行。