2015-11-23 3 views
1

В моем приложении для 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); 

ответ

3

Каждое уведомление должно иметь свой собственный идентификатор уведомления.

Ваша проблема здесь:

notificationManager.notify(0, notification); 

В частности, "0" является идентификатор уведомления. Если вы не укажете другой идентификатор, Android подумает, что вы просто обновляете уведомление, которое уже существует.

Documentation.

общественного недействительными уведомит (интермедиат идентификатор, уведомление Уведомление)

Опубликовать уведомление будет отображаться в строке состояния. Если уведомление с тем же идентификатором уже отправлено вашей заявкой и еще не отменено, оно будет заменено обновленной информацией.

Вы могли бы попробовать что-то вроде этого:

private int mCounter = 0; 

... 

notificationManager1.notify(++mCounter, notification1); 
+0

Я пытался, сохраняя, что каким-либо образом каждое уведомление имеет различный вид информации – ShivLeela

+0

я должен использовать различные намерения и различные построители для нескольких уведомлений ..? – ShivLeela

+0

Вы можете использовать все те же сборки, что и для каждого нового типа Уведомления, вам нужен другой идентификатор. Вы должны разработать способ отслеживания этой информации, чтобы впоследствии вы могли отменить эти уведомления (если это вообще актуально). – Knossos

Смежные вопросы