Android 如何提示停止报警并启动alertdialog

Android 如何提示停止报警并启动alertdialog,android,android-alertdialog,alarm,Android,Android Alertdialog,Alarm,先生,我如何在其他课堂上发出提示,停止闹钟铃声,然后启动alertdialog?此代码始终强制关闭。如果我删除了停止时钟的提示部分,闹钟不会停止响,alertdialog只显示一次。如果它收到另一条消息,它将不会再次触发alertdialog。请帮帮我。提前谢谢你的帮助 for (SmsMessage msg : messages) { if (msg.getMessageBody().contains("alert")) { Uri alert = R

先生,我如何在其他课堂上发出提示,停止闹钟铃声,然后启动alertdialog?此代码始终强制关闭。如果我删除了停止时钟的提示部分,闹钟不会停止响,alertdialog只显示一次。如果它收到另一条消息,它将不会再次触发alertdialog。请帮帮我。提前谢谢你的帮助

for (SmsMessage msg : messages) {
        if (msg.getMessageBody().contains("alert")) {

            Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
             if(alert == null){
                 // alert is null, using backup
                 alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
                 if(alert == null){  
                     // alert backup is null, using 2nd backup
                     alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);               
                 }
             }
             Ringtone r = RingtoneManager.getRingtone(context.getApplicationContext(), alert);
             AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
             int maxVolumeAlarm = audioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM);

             audioManager.setStreamVolume(AudioManager.STREAM_ALARM, maxVolumeAlarm,AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);

             r.play();

//prompt
alertDialogBuilder = new AlertDialog.Builder(
            context);
    alertDialogBuilder.setTitle("Alarm Received");

            alertDialogBuilder
            .setMessage("Stop alarm")
            .setCancelable(false)
            .setPositiveButton("OK",new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog,int id) {
                    r.stop();
                    Toast.makeText(getApplicationContext(), "alarm stopped", Toast.LENGTH_LONG).show();
                }
              });

            // create alert dialog
            AlertDialog alertDialog = alertDialogBuilder.create();

            // show it
            alertDialog.show();
                Toast.makeText(context.getApplicationContext(), "alarm started", Toast.LENGTH_LONG).show();

//open alertdialog in other activity        
Intent openInterface = new Intent("proj.receiver.RECEIVERINTERFACE");
            openInterface.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(openInterface);

        }//end if
    }//end for

我一点也不了解你,但从我的理解来看:

  • 对话框中的“r.stop()”使报警停止。所以,如果你不想让闹钟停止,就把它从那里移开

  • 只有当“消息”是“警报”(if)时,对话框才会打开并发出警报,因此,如果您希望它出现在不同的消息中,则必须创建自己的“if elseif”

  • 如果您想在另一条不同的消息中停止报警(因此,第1点和第2点)。您必须将“铃声r=…”移到“如果”语句之外,和/或根据您想要执行的操作,移到“for”语句之前

  • --

    要在另一个活动中执行此操作,请使用Ringtone变量创建一个静态类,并在创建Ringtone时将var传递给静态类以存储它。然后,当新活动打开时,从StaticClass获取var以停止振铃。
    希望能有所帮助。

    我的代码没有运行,如果我将r.stop()留在那里,它只会强制关闭。您是否在r.stop()之后尝试了“dialog.cancel()”和/或“dialog.disclose()”?