Ich weiß nicht, wie ich zwei oder mehr Benachrichtigungen zu nur einer zusammenfassen und eine Nachricht wie "Sie haben zwei neue Nachrichten" anzeigen.
Schritte, die aus dem folgenden Code beachtet werden müssen.
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.
Verwenden Sie den folgenden Code, um eine Benachrichtigung zu erstellen und gruppieren Sie diese. Binden Sie die Funktion in einen Tastenklick ein.
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());
}
}
Weisen Sie für separate Benachrichtigungen unterschiedliche NOTIFICATION_IDs zu.
Für eine vollständige Logik prüfen Sie bitte meine Antwort. Ich habe die Logik mit den gemeinsamen Einstellungen und dem Broadcast-Empfänger verwendet, da ich jede Benutzermeldung in eine einzige Gruppe gruppieren und aktive Benachrichtigungen sehen sollte Benachrichtigungen, es hat mir überhaupt nicht geholfen. Also entschied ich mich, eine kleine Logik zu schreiben. Prüfen Sie es hier, wenn Sie Lust haben.
Sie müssen die Benachrichtigung erstellen, damit sie mit einer Benachrichtigungs-ID aktualisiert werden kann, indem Sie NotificationManager.notify(ID, notification)
aufrufen.
Die folgenden Schritte müssen erstellt werden, um die Benachrichtigung zu aktualisieren:
NotificationCompat.Builder
-ObjektEin Beispiel aus den Android-Entwicklerdokumenten:
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());
...
Lesen Sie auch die Android-Dokumente zu Stacking-Benachrichtigungen https://developer.Android.com/training/wearables/notifications/stacks.html
Sie können alle Ihre Benachrichtigungen in einer einzigen Gruppe stapeln, indem Sie die MethodesetGroup
verwenden und Ihre groupId-Zeichenfolge als Parameter übergeben.
builer.setGroup ("GROUP ID STRING");
NotificationManager nManager = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
Notification.Builder builder = new Notification.Builder(this);
builder.setContentTitle("Lanes");
builder.setGroup("GROUP_ID_STRING");
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());