Android警报消息需要强制输入

时间:2015-08-20 05:35:42

标签: java android android-activity java-native-interface android-service

我开发了一款将在后台运行的Android服务。服务希望在事件中接受用户的是或否确认(例如,在接收SMS时)。 它的工作正常;是或否问题将显示给用户。但是我希望输入来自(按YES或NO)用户而不退出警报(按“移动后退”按钮或“主页”按钮等按钮退出)。 请帮助我如何实现。 在我正在使用的代码下面;

 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(); 

2 个答案:

答案 0 :(得分:0)

您可以在显示对话框时禁用反向按下(或者可能在按下后退按钮时发送“否”响应)dialog.setOnKeyListener

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上的Home按钮。但是,您可以通过在托管对话框的活动中实施onUserLeaveHint来对通过“主页”按钮发送到后台的活动作出反应。

编辑:您可能还想通过触摸外部(这是默认行为)来禁用解除对话框

dialog.setCanceledOnTouchOutside(false);

答案 1 :(得分:0)

只需将此添加到AlertDialog

中即可
 builder.setCancelable(false);

希望您使用的是android.support.v7.app.AlertDialog;