Как создать несколько локальных уведомлений в Android
В моем приложении для Android мне нужно показывать несколько локальных уведомлений в определенный день в разные промежутки времени, я использовал диспетчер тревог и широковещательный приемник для одного уведомления, но когда я пытался реализовать несколько уведомлений, отображалось только второе.
Вот мой MainActivity
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent notificationIntent = new Intent("android.media.action.DISPLAY_NOTIFICATION");
notificationIntent.addCategory("android.intent.category.DEFAULT");
PendingIntent broadcast = PendingIntent.getBroadcast(this, 100, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar cal = Calendar.getInstance();
cal.set(2015, 10, 23, 15, 03);
alarmManager.setExact(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), broadcast);
Вот BroadcastReceiver
Intent notificationIntent = new Intent(context, MainActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
stackBuilder.addParentStack(MainActivity.class);
stackBuilder.addNextIntent(notificationIntent);
PendingIntent pendingIntent1 = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
Notification notification = builder.setContentTitle("TRR - 2016")
.setContentText("Station - 1 closed grace period only 10min")
.setTicker("New Message Alert!")
.setSmallIcon(R.mipmap.ic_launcher)
.setDefaults(Notification.DEFAULT_SOUND)
.setContentIntent(pendingIntent1).build();
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(mCounter, notification);
Notification notification1 = builder.setContentTitle("TRR - 2016")
.setContentText("Station - 2 closed grace period only 10min")
.setTicker("New Message Alert!")
.setSmallIcon(R.mipmap.ic_launcher)
.setDefaults(Notification.DEFAULT_SOUND)
.setContentIntent(pendingIntent1).build();
NotificationManager notificationManager1 = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager1.notify(++mCounter, notification1);
1 ответ
Каждое уведомление должно иметь свой собственный идентификатор уведомления.
Ваша проблема здесь:
notificationManager.notify(0, notification);
В частности, "0" - это идентификатор уведомления. Если вы не предоставите другой идентификатор, Android будет думать, что вы просто обновляете уже существующее Уведомление.
public void notify (int id, Notification Notification)
Опубликовать уведомление, которое будет отображаться в строке состояния. Если ваше приложение уже опубликовало уведомление с таким же идентификатором и еще не было отменено, оно будет заменено обновленной информацией.
Вы можете попробовать что-то вроде этого:
private int mCounter = 0;
...
notificationManager1.notify(++mCounter, notification1);