我在帖子中搜索了我的问题的答案,但没有找到任何解决我问题的方法。我正在尝试使用一个 AlarmSettings 类设置 3 个不同的警报。当我设置两个警报时,第二个优先于第一个,第一个永远不会响起。我认为这可能与我的未决 Intent 有关......我真的是 android 新手,非常感谢您的帮助。这是我设置闹钟的代码:
public void setAlarm() {
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, timepicker.getCurrentHour());
calendar.set(Calendar.MINUTE, timepicker.getCurrentMinute());
calendar.set(Calendar.SECOND, 0);
if (timepicker.getCurrentHour() < calendar.get(Calendar.HOUR_OF_DAY)) { //if the alarm hour is less than the current hour
calendar.add(Calendar.DATE, 1); //then add 24 hours (1 DATE or Day)
}
//Create the text that we want to set the TextView alarmtime to in Main
StringBuilder sb = new StringBuilder();
if (timepicker.getCurrentHour() > 12) {
sb.append(timepicker.getCurrentHour() - 12);
} else {
sb.append(timepicker.getCurrentHour());
}
sb.append(":");
sb.append(timepicker.getCurrentMinute());
sb.append(" ");
if (timepicker.getCurrentHour() > 12) {
sb.append("pm");
} else {
sb.append("am");
}
if (((GlobalVariables)getApplication()).getCurrentAlarmBeingEdited() == 1) {
((GlobalVariables)getApplication()).setAlarm1Cal(calendar);
Main.alarmTime1.setText(sb);
Intent intent1 = new Intent(AlarmSettings.this, AlarmReceiver.class);
intent1.putExtra("alarm_num", ((GlobalVariables)getApplication()).getCurrentAlarmBeingEdited());
PendingIntent pendingIntent1 = PendingIntent.getActivity(getApplicationContext(), 0, intent1, PendingIntent.FLAG_ONE_SHOT);
alarmmanager1.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent1);
} else if (((GlobalVariables)getApplication()).getCurrentAlarmBeingEdited() == 2) {
((GlobalVariables)getApplication()).setAlarm2Cal(calendar);
Main.alarmTime2.setText(sb);
Intent intent2 = new Intent(AlarmSettings.this, AlarmReceiver.class);
intent2.putExtra("alarm_num", ((GlobalVariables)getApplication()).getCurrentAlarmBeingEdited());
PendingIntent pendingIntent2 = PendingIntent.getActivity(getApplicationContext(), 0, intent2, PendingIntent.FLAG_ONE_SHOT);
alarmmanager2.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent2);
} else if (((GlobalVariables)getApplication()).getCurrentAlarmBeingEdited() == 3) {
((GlobalVariables)getApplication()).setAlarm3Cal(calendar);
Main.alarmTime3.setText(sb);
Intent intent3 = new Intent(AlarmSettings.this, AlarmReceiver.class);
intent3.putExtra("alarm_num", ((GlobalVariables)getApplication()).getCurrentAlarmBeingEdited());
PendingIntent pendingIntent3 = PendingIntent.getActivity(getApplicationContext(), 0, intent3, PendingIntent.FLAG_ONE_SHOT);
alarmmanager3.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent3);
}
finish();
Toast.makeText(getApplicationContext(), "system time: " + System.currentTimeMillis() + "\n" + "picked time: " + calendar.getTimeInMillis(), Toast.LENGTH_LONG).show();
}
最佳答案
PendingIntent pendingIntent1 = PendingIntent.getActivity(getApplicationContext(), 0, intent1, PendingIntent.FLAG_ONE_SHOT);
将 0 属性更改为您的闹钟的 id,例如您有三个闹钟,
用 0,1,2 重复上面的代码。
这样它们就不会互相覆盖。
关于java - android alarmmanager 多个警报,一个覆盖另一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10271417/