-1

我创建了一个程序,即使手机被锁定,它也会在收到消息时发出警报。当电话响起时,它会显示关闭按钮以停止闹钟,但我的代码只显示关闭按钮并迅速消失,让我无法选择如何停止闹钟。请帮我处理这段代码。提前感谢您的帮助

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.receiverinterface);
    unlockScreen();
    alertDialogBuilder = new AlertDialog.Builder(
            context);
    alertDialogBuilder.setTitle("Alarm");
            alertDialogBuilder
            .setMessage("Stop Alarm")
            .setCancelable(false)
            .setPositiveButton("Dismiss", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog,int id) {
                    Ringtone r = EAlarmReceiver.r;
                    r.stop();
                    Toast.makeText(context.getApplicationContext(), "Alarm Stopped", Toast.LENGTH_LONG).show();
                    if(EAlarmReceiver.sms.length() > 10)
                    {
                        Intent openInterface = new Intent("proj.receiver.VIEWMESSAGE");
                        openInterface.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        context.startActivity(openInterface);
                    }
                    else
                    {
                        Intent openInterface = new Intent("proj.receiver.RECEIVERINTERFACE");
                        openInterface.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        context.startActivity(openInterface);
                    }
                }
            });
            // create alert dialog
            AlertDialog alertDialog = alertDialogBuilder.create();
            // show it
            alertDialog.show();
}// end oncreate()

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    finish();
}

//unlock screen
public void unlockScreen() {
    //make the activity show even the screen is locked.
    Window window = getWindow();
    window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
            + WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
            + WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
            + WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
}
4

1 回答 1

1

finish()从 onPause() 中删除后尝试此代码。也发布完整的代码。

编辑:-正如您所说的删除完成对您有用,这是您的第二个问题的解决方案。

1)复杂和临时的解决方案:-尝试添加一个布尔变量,您应该在对 AlertDialog 采取的操作时将其设置为 true,如果在 onResume 中为 true,则完成您的活动。每次你回到你的活动时都会调用 OnResume。

2)但如果我在你的地方,我会遵循以下方法。

创建一个布局看起来像警报对话框。并在清单中的活动声明中将活动主题设置为对话框,它将打开你的活动作为对话框。因此,您无需创建 AlertDialog 来处理操作,您可以添加关闭按钮和所有按钮。

于 2013-01-27T19:46:22.083 回答