有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

报警信号后的java弹出窗口

我想知道-如何在AlarmManager调用时显示弹出窗口?我已经创建了AlarmManager现在我需要创建一些东西来显示弹出窗口以取消此警报

我的代码:

public void setAlarm(long timeInMillis){

    if(Build.VERSION.SDK_INT >= 23){
        mCalendar.set(
                mCalendar.get(Calendar.MONTH),
                mCalendar.get(Calendar.YEAR),
                mCalendar.get(Calendar.DAY_OF_YEAR),
                mCalendar.get(Calendar.HOUR_OF_DAY),
                mCalendar.get(Calendar.MINUTE)
        );
    }

    final AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

    Intent intent = new Intent(this, MyAlarm.class);
    intent.setData(currentUri);


    final PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);


    alarmManager.setExact(AlarmManager.RTC, timeInMillis, pendingIntent);
}

public class MyAlarm extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {

    MediaPlayer mediaPlayer = MediaPlayer.create(context, Settings.System.DEFAULT_RINGTONE_URI);


    mediaPlayer.start();

}

}


共 (1) 个答案

  1. # 1 楼答案

    onReceive(context, intent) {
      /*show the dialog in this method. set the onclick so it can dismiss the alarm, 
        get the value for the alarm from the bundle. I may be wrong about this 
        but i think alarmManager has a cancel(PendingIntent operation) method that u can 
        just send in the intent and your done. 
        Call a stopMedia(context) method after the cancel in order to stop the media 
        that is playing
       */
       showDialog(context, intent)
       //Extract the play media code to a method for readability
       playMedia(context) 
    }
    

    这应该能解决你的问题


    在代码发布之前:

    我们可以使用挂起的意图,也可以让一个活动来处理挂起的意图。或者使用处理程序来执行代码

    在这两种情况下,创建一个对话框片段,然后使用适当的上下文来显示它。对话框片段按钮的setOnClickListener{alarmManager.cancel}

    根据报警管理器的设置方式,可能需要更多的解释