更改对话框上方的z活动顺序

时间:2014-08-04 23:36:43

标签: android android-framework

我正在定制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()。我还交换了这两个标志的值。但它不起作用。我错过了什么吗?。请帮助我。

1 个答案:

答案 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

虽然很简单但是活动必须作为系统进程运行。否则你将无法使用任何“特殊”窗口(这可能是你的解决方案不起作用的原因)。

我还没有测试过,但这应该可行。