我开发了一款将在后台运行的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();
答案 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;