Как группировать андроидные уведомления, например whatsapp?

Я не знаю, как группировать два или более уведомлений только в одном и показывать сообщение типа «У вас есть два новых сообщения».

Solutions Collecting From Web of "Как группировать андроидные уведомления, например whatsapp?"

Шаги, которые нужно соблюдать по приведенному ниже коду.

NotificationCompat.Builder:contains the UI specification and action information NotificationCompat.Builder.build() :used to create notification (Which returns Notification object) Notification.InboxStyle: used to group the notifications belongs to same ID NotificationManager.notify():to issue the notification. 

Используйте приведенный ниже код, чтобы создать уведомление и сгруппировать его. Включите функцию нажатием кнопки.

 private final int NOTIFICATION_ID = 237; private static int value = 0; Notification.InboxStyle inboxStyle = new Notification.InboxStyle(); Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.push_notify_icon); public void buttonClicked(View v) { value ++; if(v.getId() == R.id.btnCreateNotify){ NotificationManager nManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); Notification.Builder builder = new Notification.Builder(this); builder.setContentTitle("Lanes"); builder.setContentText("Notification from Lanes"+value); builder.setSmallIcon(R.drawable.ic_launcher); builder.setLargeIcon(bitmap); builder.setAutoCancel(true); inboxStyle.setBigContentTitle("Enter Content Text"); inboxStyle.addLine("hi events "+value); builder.setStyle(inboxStyle); nManager.notify("App Name",NOTIFICATION_ID,builder.build()); } } 

Для отдельных уведомлений присваиваются разные NOTIFICATION_IDs.

Вам необходимо создать уведомление, чтобы его можно было обновить с помощью идентификатора уведомления, вызвав NotificationManager.notify(ID, notification) .

Чтобы обновить уведомление, необходимо создать следующие шаги:

  1. Обновить или создать объект NotificationCompat.Builder
  2. Создайте из него объект уведомления
  3. Выдать уведомление с тем же идентификатором, который вы использовали ранее

Пример, взятый из документации разработчика Android:

 mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); // Sets an ID for the notification, so it can be updated int notifyID = 1; mNotifyBuilder = new NotificationCompat.Builder(this) .setContentTitle("New Message") .setContentText("You've received new messages.") .setSmallIcon(R.drawable.ic_notify_status) numMessages = 0; // Start of a loop that processes data and then notifies the user ... mNotifyBuilder.setContentText(currentText).setNumber(++numMessages); // Because the ID remains unchanged, the existing notification is updated. mNotificationManager.notify(notifyID, mNotifyBuilder.build()); ... 

Также ознакомьтесь с документами Android в разделе «Уведомления стекирования» https://developer.android.com/training/wearables/notifications/stacks.html

Для полной логики, пожалуйста, рассмотрите вопрос о проверке моего ответа. Я использовал логику с общими предпочтениями и широковещательным приемником, поскольку мне нужно было сгруппировать каждое сообщение пользователя в единое целое и быть в поле зрения активных уведомлений. Как только путем таргетинга на уровень 23 api вы можете активировать Уведомления, мне это совсем не помогло. Так что я решил написать небольшую логику. Проверьте это здесь, если вам хочется.

https://stackoverflow.com/a/38079241/6466619