Вот мой код, который я пробовал, Шаги.
1) создание события AlarmManager, вызвав метод AM.Set(), предположим, со временем X.
2) создание другого события AlarmManager со временем Y.
Результат = первое событие запускается в момент времени Y вместо времени X. и второе не запускается вообще.
AlarmManager AM =(AlarmManager)getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent();
intent.setAction(Constants.ALARM_ACTION);
intent.putExtra(Constants.EXTRA_DATA1, data[0]);
intent.putExtra(Constants.EXTRA_DATA2, data[1]);
long selectedTime = Long.parseLong(data[2]);
PendingIntent pi = PendingIntent.getBroadcast(mContext, 0, intent,0);
AM.set(AlarmManager.RTC,selectedTime, pi);
Я делаю что-то неправильно? Мне нужно вызвать все события.
Ваши первые и второстепенные Intents
эквивалентны, и поэтому вы PendingIntent
тем же объектом PendingIntent
в результате getBroadcast()
. Или:
Используйте уникальный requestCode
(2-й параметр для getBroadcast()
), который, я думаю, очистит это или
Сделайте что-то уникальное действие, данные (Uri
), категории или тип MIME для каждого Intent
(дополнительные параметры не являются достаточными)
Добавляя переменную count, которая будет автоматически увеличиваться при попытке getBroadcast. он работает сейчас.
AlarmManager AM =(AlarmManager)getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent();
intent.setAction(Constants.ALARM_ACTION_MESSAGE);
intent.putExtra(Constants.EXTRA_NUMBER, data[0]);
intent.putExtra(Constants.EXTRA_BODY, data[1]);
long selectedTime = Long.parseLong(data[2]);
PendingIntent pi = PendingIntent.getBroadcast(mContext, count++, intent,0);
AM.set(AlarmManager.RTC,selectedTime, pi);