Java 报警管理器的多重通知

Java 报警管理器的多重通知,java,android,Java,Android,我想做一个功能,允许当我点击一个按钮,我选择一个日期,并在我收到这些日期的通知后 此代码只允许我接收最后一次通知,而不允许接收其他通知 String dtStart = String.valueOf(hourOfDay) + ":" + String.valueOf(minute); Calendar calendar; Intent intent1; calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, ho

我想做一个功能,允许当我点击一个按钮,我选择一个日期,并在我收到这些日期的通知后 此代码只允许我接收最后一次通知,而不允许接收其他通知

String dtStart = String.valueOf(hourOfDay) + ":" + String.valueOf(minute);
Calendar calendar;
Intent intent1;
calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
calendar.set(Calendar.MINUTE, minute);
calendar.set(Calendar.SECOND, 0);

intent1 = new Intent(getActivity(), AlarmReceiver.class);
intent1.putExtra("titrefr",titlefr);
intent1.putExtra("contentfr",contentfr);
intent1.putExtra("contentar",content);
intent1.putExtra("titrear",title);
intent1.putExtra("audio",stepAudio);
intent1.putExtra("image",image);

PendingIntent pendingIntent = PendingIntent.getBroadcast(getActivity(), 1000, intent1, PendingIntent.FLAG_UPDATE_CURRENT);

AlarmManager am = (AlarmManager) getActivity().getSystemService(getActivity().ALARM_SERVICE);
//  am.set(AlarmManager.ELAPSED_REALTIME,calendar.getTimeInMillis(),pendingIntent);

am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);

发生这种情况的原因只是因为报警id是覆盖的,这意味着当您设置报警并为每个报警提供1000 id时

 PendingIntent pendingIntent = PendingIntent.getBroadcast(getActivity(), 1000, intent1, PendingIntent.FLAG_UPDATE_CURRENT);
所以当您设置last time时。Alarm manager将last time设置为id 1000,以便last time Alarm正常工作。我简单地添加了一个方法,可以帮助您添加多个报警

    private String setAlarm(int year, int month, int day, int hour, int min) {
                String value = "";
                calendar = Calendar.getInstance();
                calendar.set(Calendar.YEAR, year);
                calendar.set(Calendar.MONTH, month);
                calendar.set(Calendar.DAY_OF_MONTH, day);
                calendar.set(Calendar.HOUR_OF_DAY, hour);
                calendar.set(Calendar.MINUTE, min);
                calendar.set(Calendar.SECOND, 00);
                if (calendar.getTimeInMillis() < System.currentTimeMillis()) {
                    Toast.makeText(AddDrugFormActivity.this, "Select Valid Time", Toast.LENGTH_LONG).show();
                    value = "INValid";
                } else {
                    value = "Valid";
                    Intent intentAlarm = new Intent(AddDrugFormActivity.this, AlarmReciever.class);
  SharedPreferences preferences= PreferenceManager.getDefaultSharedPreferences(context)
                    int id = preferences.getInt("id", 0);
                    PendingIntent pIntent = PendingIntent.getBroadcast(AddDrugFormActivity.this, id, intentAlarm, 0);// set id 0 if single alarm require
                    alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pIntent);
                    id = id + 1;
                    editor = preferences.edit();
                    editor.putInt("id", id);
                    editor.commit();

                }
                return value;
            }
private String setAlarm(整数年、整数月、整数日、整数小时、整数分钟){
字符串值=”;
calendar=calendar.getInstance();
calendar.set(calendar.YEAR,YEAR);
calendar.set(calendar.MONTH,MONTH);
calendar.set(calendar.DAY,月中日,日);
calendar.set(calendar.HOUR\u OF_DAY,HOUR);
calendar.set(calendar.MINUTE,min);
日历.set(calendar.SECOND,00);
if(calendar.getTimeMillis()
您只需使用此方法添加多个报警。这是工作代码