我必须解雇这个系统Dialog
(附后)。
我得到了这个值,但是我无法在服务中以编程方式解除它。在活动中。
我的问题是:
- 有可能解雇吗?如果是,请帮助或指导我如何实现它。
醇>
答案 0 :(得分:22)
请检查
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (! hasFocus) {
Intent closeDialog = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
sendBroadcast(closeDialog);
}
}
它正在我的代码中工作。
答案 1 :(得分:20)
您可以使用 - ACTION_CLOSE_SYSTEM_DIALOGS
广播操作:当用户操作请求时广播 解雇的临时系统对话框。
public static final String ACTION_CLOSE_SYSTEM_DIALOGS
广播操作:当用户操作请求临时系统对话框解除时,广播。临时系统对话框的一些示例是通知窗口阴影和最近的任务对话框。
常量值:" android.intent.action.CLOSE_SYSTEM_DIALOGS"
工作示例 -
Android Manifest -
<receiver android:name=".SystemDialogReceiver">
<intent-filter>
<action android:name="android.intent.
action.CLOSE_SYSTEM_DIALOGS" />
</intent-filter>
</receiver>
班级档案
class SystemDialogReceiver extends BroadcastReceiver {
private static final String SYSTEM_DIALOG_REASON_KEY = "reason";
private static final String
SYSTEM_DIALOG_REASON_RECENT_APPS = "recentapps";
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)){
String dialogType = intent.
getStringExtra(SYSTEM_DIALOG_REASON_KEY);
if(dialogType != null && dialogType.
equals(SYSTEM_DIALOG_REASON_RECENT_APPS)){
Intent closeDialog =
new Intent(Intent.
ACTION_CLOSE_SYSTEM_DIALOGS);
context.sendBroadcast(closeDialog);
}
}
}
}
答案 2 :(得分:12)
尝试使用以下内容:
sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
答案 3 :(得分:2)
当窗口焦点丢失时,您可以使用ACTION_CLOSE_SYSTEM_DIALOGS。但请注意,这样做还会阻止用户在应用程序运行时关闭手机,因为“关闭电源”对话框也是系统对话框。