我已在帖子中搜索了我的问题的答案,但没有找到能解决我问题的任何东西。我正在尝试使用一个AlarmSettings类设置3种不同的警报。当我设置两个警报时,第二个警报优先于第一个警报,第一个永不熄灭。我认为这可能与我的未决意图有关……我真的是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重复上述代码。
这样,他们就不会互相覆盖。