Ich habe ein Problem, dass ich die Antwort nicht finden kann. Ich habe die AndroidDeveloper Tutorials ausprobiert, ich habe hier auf stackoverflow und google gesucht aber entweder sind meine Such-Fähigkeiten awefull oder es gibt keine Antwort die ich meiner Meinung nach mein Problem antworte.Stack-Benachrichtigungen in Kitkat (API 19) mit setGroup() funktioniert nicht
Ich möchte Nachrichtenbenachrichtigungen in einer Benachrichtigung für alle neuen Nachrichten stapeln, wenn es mehrere gibt. Ich kann für jede Nachricht eine Benachrichtigung anzeigen, aber ich kann keine Stapel-/Zusammenfassungsbenachrichtigung erstellen.
Das Beste, was ich bekommen, ist dies: http://developer.android.com/images/android-5.0/notifications/Summarise_Dont.png
Was ich will, ist dies: http://developer.android.com/images/android-5.0/notifications/Summarise_Do.png
Ich bin mit API 19 und es muss nicht zurück-kompatibel sein. Schreibe meinen Code in AndroidStudio und teste in Genymotion.
ich versucht habe, mit NotificationCompatManager mit dem Ergebnis der Mehrfachanmeldungen mit: NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
Ich habe auch versucht NotificationManager mit dem gleichen Ergebnis verwendet, das heißt mehrere Benachrichtigungen:
NotificationManager notificationManager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
Meine Benachrichtigung Aussehen wie folgt:
Notification notification = new NotificationCompat.Builder(this) .setContentTitle("New message from... ") .setContentText("Message:...") .setSmallIcon(R.drawable.icon) .setContentIntent(pIntent) .setSound(RingtoneManager.getDefaultUri(TYPE_NOTIFICATION)) .setGroup(mNoti) .setGroupSummary(true) .setAutoCancel(true) .build();
Und ich Feuer der Meldung wie folgt aus:
notificationManager.notify(counter, notification);
Wo Zählerinkrementierungen für jede Meldung so dass jede Meldung eine eigene ID hat.
Ich habe dieses Formular auch für den Aufbau und Fiering die Benachrichtigung ohne succsess versucht:
NotificationCompat.Builder notificationBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.icon)
.setContentTitle("message from...")
.setContentText("message...")
.setContentIntent(pIntent)
.setAutoCancel(true)
.setGroup(mNoti)
.setGroupSummary(true)
.setSound(RingtoneManager.getDefaultUri(TYPE_NOTIFICATION));
notificationManager.notify(counter, notificationBuilder.build());
setGroup offensichtlich für mich nicht die Feststellung. Ich verstehe nicht, warum es nicht funktioniert oder wie ich es zum Laufen bringen soll.
meiner Gruppe sieht wie folgt aus:
final static String mNoti = "mNoti";
Das einzige, was aus der Ferne nahe kommt, was ich will für alle Mitteilungen die gleiche ID verwendet, damit die neuen Meldungen, die alten überschreibt und mit SetNumber (int) beim Erstellen der Benachrichtigung. Jedoch gibt dies nicht wirklich das Ergebnis, das ich will, weil ich nicht glaube, dass ich die Anzahl der Benachrichtigungen erhalten kann, die nicht vom Benutzer gehandhabt werden. Oder kann ich?
Kann mir jemand helfen, mein gewünschtes Ziel zu erreichen?
folgte ich Ihren Rat und verwendet setGroupSummary und setGroup und es hat funktioniert, wenn auch nur auf Android 5.0 und höher. 4.4 und 4.2 zeigen jede Benachrichtigung separat. Dies geht über die ursprüngliche Frage hier hinaus, also habe ich eine neue erstellt: http://stackoverflow.com/q/31483772/1204377 –
@AntonCherkashyn Sind Sie sicher, dass Sie diese Zeile enthalten haben: 'manager.cancelAll(); // Ist das wirklich nötig? '? Dies ist der "Trick", um die alten Benachrichtigungen zu schließen, die nur die Zusammenfassung offen lassen. – Pphoenix
Ich habe das versucht und dann sehe ich nur die Zusammenfassung Benachrichtigung auf dem Telefon, stimmt, aber mein Endziel ist es, Benachrichtigung auf Android Wear gestapelt haben, und dazu muss ich N individuelle Benachrichtigungen + 1 Zusammenfassung Benachrichtigung per Android-Entwickler Giodelines feuern : https://developer.android.com/training/ wearables/notifications/stacks.html. Aufruf von manager.cancelAll(); Löst auch Benachrichtigungen über Android ab. Also das wird nicht funktionieren, da diese einzelnen Benachrichtigungen benutzerdefinierte Aktionen/Seiten/etc. haben. –