Мое приложение позволяет пользователям устанавливать напоминания о приеме лекарств в определенное время. Нет проблем с установкой этих будильников. У меня возникли трудности с отменой этих сигналов тревоги в более поздний момент времени в другом действии.
Это мой код для установки будильника:
private void setAlarms() {
Intent myIntent=new Intent(getApplicationContext(), AlarmReceiver.class);
myIntent.putExtra("MedName",medication_name);
myIntent.setAction("b5.project.medibro.receivers.AlarmReceiver");
AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
int counter=0;
for(String timer: timers){
//timer is a string of the form "hh:mm"
try {
String[] comps=timer.split(":");
Calendar cal=Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, Integer.valueOf(comps[0]));
cal.set(Calendar.MINUTE, Integer.valueOf(comps[1]));
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
//Date date= dateFormat.parse(startDate + " " + timer);
Log.d(TAG,comps[0]+" "+comps[1]+ "Alarm Time: " + cal.getTime().toString());
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), counter, myIntent,PendingIntent.FLAG_UPDATE_CURRENT);
am.setInexactRepeating(AlarmManager.RTC_WAKEUP,
cal.getTimeInMillis(),
AlarmManager.INTERVAL_DAY,
pendingIntent);
Log.d(TAG,"Counter: "+counter);
counter++;
} catch (ParseException e) {
e.printStackTrace();
Log.d(TAG,"Time Parsing error: "+e.getMessage());
}
}
Как видите, счетчик — это идентификатор ожидающих намерений, принадлежащих ONE Medicine. Но когда есть несколько лекарств, ожидающие намерения будут иметь одинаковые идентификаторы (значения счетчика).
Может ли кто-нибудь предложить альтернативный/эффективный метод разрешения этого конфликта?