android alarmmanager多个闹钟,一个覆盖另一个?

我已经search了我的问题的答案职位,但还没有find任何解决我的问题。 我正在尝试使用一个AlarmSettings类设置3个不同的警报。 当我设置两个警报,第二个优先于第一个,第一个永远不会熄灭。 我认为这可能与我的未决意图有关…我真的是新来的机器人,将不胜感激的帮助。 这是我设置闹钟的代码:

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(); } 

Solutions Collecting From Web of "android alarmmanager多个闹钟,一个覆盖另一个?"

 PendingIntent pendingIntent1 = PendingIntent.getActivity(getApplicationContext(), 0, intent1, PendingIntent.FLAG_ONE_SHOT); 

将0属性更改为警报的ID,例如,您有三个警报,

用0,1,2重复上面的代码。

这样他们不会相互覆盖。