Как группировать андроидные уведомления, например whatsapp?
Я не знаю, как группировать два или более уведомлений только в одном и показывать сообщение типа "У вас есть два новых сообщения".
Ответы
Ответ 1
Шаги, которые следует соблюдать по приведенному ниже коду.
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.
Ответ 2
Для полной логики, пожалуйста, рассмотрите вопрос о моем ответе. Я использовал логику с общими предпочтениями и широковещательным приемником, поскольку мне нужно было сгруппировать каждое сообщение пользователя в единое целое и быть в поле зрения активных уведомлений. Как только, нацелившись на уровень api 23, вы может получать активные уведомления, мне это совсем не помогло. Так что я решил написать небольшую логику. Проверьте это здесь, если вам хочется.
fooobar.com/questions/194894/...
Ответ 3
Вам необходимо создать уведомление, чтобы его можно было обновить с помощью идентификатора уведомления, вызвав NotificationManager.notify(ID, notification)
.
Чтобы обновить уведомление, необходимо создать следующие шаги:
- Обновить или создать объект
NotificationCompat.Builder
- Создайте объект уведомления из него
- Выдать уведомление с тем же идентификатором, который вы использовали ранее
Пример, взятый из документации разработчика 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 о Stacking Notifications
https://developer.android.com/training/wearables/notifications/stacks.html