Android以编程方式解除系统对话框

时间:2015-12-22 19:31:04

标签: android android-alertdialog android-broadcast

我想以编程方式关闭系统生成的警报对话框。我已经尝试了这里提供的所有解决方案(stackoverflow),但它似乎不起作用。 This是大多数人都接受的答案,但它只会驳回通知面板和最近的任务菜单。

我在os版本4.0.3,4.2.2,4.4.2和5.1.1的设备上测试过,它在所有设备上都有相同的行为。有些应用程序实际上可以解除所有系统对话框(Mubble)。有人可以建议它是如何完成的吗?

由于

1 个答案:

答案 0 :(得分:-1)

通常的答案是

sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));

但是,这并不适用于所有事情。特别是,在某些设备上,它不适用于“最近的应用程序”列表。

解决方案是检测您的应用何时失去焦点,然后将您的应用移到前面。请注意,您的应用需要android.permission.REORDER_TASKS权限才能执行此操作。

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        this.keepFocus = true;
    }
    if (! hasFocus && this.keepFocus) {
        ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
        am.moveTaskToFront(getTaskId(), ActivityManager.MOVE_TASK_WITH_HOME );
    }
}