Android 提示信息需要强制输入

Android Alert Message Need Mandatory Input

我开发了一项 Android 服务,它将 运行 在后台运行。该服务希望在事件中接受用户的是或否确认(比如收到短信时)。 它工作正常;是或否问题将显示给用户。但我想要来自(按是或否)用户的输入而不退出警报(通过按移动后退按钮或主页按钮等退出)。 请帮助我怎么可能。 在我使用的代码下方;

 AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
//ctx is the Context
            builder.setTitle("Emergency!"); 
            String txt="Do you want to accept?"; 
            builder.setMessage(txt);
            builder.setPositiveButton("YES", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                    //Do something 
                }
                });
                builder.setNegativeButton("NO", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                        ///dialog.dismiss();
                    }
                });

                AlertDialog alert = builder.create();
                alert.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
                alert.show(); 

您可以使用 dialog.setOnKeyListener

在显示对话框时禁用后退按钮(或者可能在按下后退按钮时发送 "No" 响应)
dialog.setOnKeyListener(new Dialog.OnKeyListener() { 
  @Override 
  public boolean onKey(DialogInterface arg0, int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
      finish();
      dialog.dismiss(); 
    }
    return true; 
  } 
 });

遗憾的是,您无法覆盖 Android 上的主页按钮按下。但是,您可以通过在托管对话框的 activity 中实现 onUserLeaveHint 来对通过主页按钮发送到后台的 activity 做出反应。

编辑:您可能还想禁用触摸外部关闭对话框(这是默认行为),方法是

dialog.setCanceledOnTouchOutside(false);

只需在您的 AlertDialog 中添加这个

 builder.setCancelable(false);

希望您正在使用 android.support.v7.app.AlertDialog;