我想以编程方式关闭系统生成的警报对话框。我已经尝试了这里提供的所有解决方案(stackoverflow),但它似乎不起作用。 This是大多数人都接受的答案,但它只会驳回通知面板和最近的任务菜单。
我在os版本4.0.3,4.2.2,4.4.2和5.1.1的设备上测试过,它在所有设备上都有相同的行为。有些应用程序实际上可以解除所有系统对话框(Mubble)。有人可以建议它是如何完成的吗?
由于
答案 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 );
}
}