Ich benötige ein Programm, das eine Benachrichtigung auf Android hinzufügt. Und wenn jemand auf die Benachrichtigung klickt, sollte dies ihn zu meiner zweiten Aktivität führen.
Ich habe Code eingerichtet. Die Benachrichtigung sollte funktionieren, aber aus irgendeinem Grund funktioniert sie nicht. Das Notification
wird überhaupt nicht angezeigt. Ich weiß nicht, was ich vermisse.
Code dieser Dateien:
Notification n = new Notification.Builder(this)
.setContentTitle("New mail from " + "[email protected]")
.setContentText("Subject")
.setContentIntent(pIntent).setAutoCancel(true)
.setStyle(new Notification.BigTextStyle().bigText(longText))
.build();
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
// Hide the notification after it's selected
notificationManager.notify(0, n);
android
notifications
Choudhury AM
quelle
quelle
Activity
nicht gestartet? Wird dasNotification
nicht angezeigt?Antworten:
Der Code funktioniert ohne Symbol nicht. Fügen Sie der
setSmallIcon
Builder-Kette den Aufruf wie folgt hinzu, damit er funktioniert:Android Oreo (8.0) und höher
Android 8 führte eine neue Anforderung zum Festlegen der
channelId
Eigenschaft mithilfe von a einNotificationChannel
.quelle
setChannelId
sind erforderlich. Bevor ich das hinzufüge, wird eine Benachrichtigung auf meinem SONY-Gerät angezeigt, jedoch nicht auf dem SAMSUNG-Gerät.Android.OS.BuildVersionCodes.O
gleich 26?if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){ mBuilder.setChannelId(channelId); }
da ohne diese Prüfung die Benachrichtigung nicht angezeigt wird, selbst wenn Ihre Geräte-API> = 26 ist.Eigentlich die Antwort von ƒernando Valle scheint nicht richtig zu sein. Andererseits ist Ihre Frage zu vage, weil Sie nicht erwähnen, was falsch ist oder nicht funktioniert.
Wenn ich mir Ihren Code ansehe, gehe ich davon aus, dass
Notification
einfach nicht angezeigt wird.Ihre Benachrichtigung wird nicht angezeigt, da Sie kein Symbol angegeben haben. Obwohl in der SDK-Dokumentation nicht erwähnt wird, dass dies erforderlich ist, ist dies in der Tat sehr wichtig
Notification
werden es ohne eines nicht anzeigen.addAction
ist erst seit 4.1 verfügbar. Zuvor haben Sie die verwendetPendingIntent
, um eine zu startenActivity
. Sie scheinen a anzugebenPendingIntent
, daher liegt Ihr Problem woanders. Logischerweise muss man daraus schließen, dass es das fehlende Symbol ist.quelle
Notification.Builder
nichtNotificationCompat.Builder
, wie Sie vorschlagen. Nur weil es eine Kompatibilitätsbibliothek gibt und diese verwendet werden kann, bedeutet dies nicht, dass die Funktion in der normalen API verfügbar ist. Der von Ihnen bereitgestellte Link legt dies tatsächlich fest. Diese Frage hängt eindeutig zusammenNotification.Builder
, wie das Beispiel zeigt. Und die Kompatibilitätsbibliothek enthielt diese Funktion wahrscheinlich erst, nachdem 4.1 verfügbar war. Ihre Antwort ist irreführend, da Sie jetzt vorschlagen, dass sie seit 2.3 verfügbar ist.Ihnen fehlte das kleine Symbol. Ich habe den gleichen Fehler gemacht und der obige Schritt hat ihn behoben.
Gemäß der offiziellen Dokumentation: Ein Benachrichtigungsobjekt muss Folgendes enthalten:
Ein kleines Symbol, gesetzt von setSmallIcon ()
Ein von setContentTitle () festgelegter Titel
Detailtext , festgelegt durch setContentText ()
Unter Android 8.0 (API-Stufe 26) und höher eine gültige Benachrichtigungskanal-ID, die von setChannelId () festgelegt oder beim Erstellen eines Kanals im NotificationCompat.Builder-Konstruktor bereitgestellt wird.
Siehe http://developer.android.com/guide/topics/ui/notifiers/notifications.html
quelle
Dieses ausgelöst mich bis heute, aber ich merkte , es war , weil auf Android 9.0 (Pie), Stören Sie nicht standardmäßig auch alle Benachrichtigungen versteckt, anstatt nur sie wie in Schweigen zu bringen Android 8.1 (Oreo) und vor. Dies gilt nicht für Benachrichtigungen.
Ich mag es, wenn DND für mein Entwicklungsgerät aktiviert ist. Wenn ich also in die DND-Einstellungen gehe und die Einstellung ändere, um die Benachrichtigungen einfach auszuschalten (aber nicht auszublenden), wurde dies für mich behoben.
quelle
Das Erstellen von Benachrichtigungskanälen ist für Android-Versionen nach Android 8.1 (Oreo) obligatorisch, um Benachrichtigungen sichtbar zu machen. Wenn in Ihrer App keine Benachrichtigungen für Oreo + Androids angezeigt werden, müssen Sie beim Start Ihrer App die folgende Funktion aufrufen:
quelle
Ich denke, dass du das vergisst
Schauen Sie hier: Aktion hinzufügen
quelle
addAction()
ist am nicht verfügbarNotification.Builder
.Action
Instanz übergeben, mit der Sie erstellen könnenNotification.Action.Builder
. PS: Verwenden Sie immer die Compat-Alternative (dh NotificationCompat), da Google dazu neigt, Fehler zu beheben und eine bessere Kompatibilität mit ihnen bereitzustellen.setContentIntent(null)
mit dem Builder.Ich hatte das gleiche Problem mit meiner Android-App. Ich habe Benachrichtigungen ausprobiert und festgestellt, dass Benachrichtigungen auf meinem Android-Emulator angezeigt wurden, auf dem ein Android 7.0 (Nougat) -System ausgeführt wurde, während sie auf meinem Telefon mit Android 8.1 (Oreo) nicht ausgeführt wurden.
Nachdem ich die Dokumentation gelesen hatte, stellte ich fest, dass Android eine Funktion namens Benachrichtigungskanal hatte, ohne die Benachrichtigungen auf Oreo-Geräten nicht angezeigt werden. Unten finden Sie den Link zur offiziellen Android-Dokumentation zu Benachrichtigungskanälen.
quelle
Für mich war es ein Problem mit
deviceToken
. Überprüfen Sie, ob das Empfänger- und Absender-Token in Ihrer Datenbank ordnungsgemäß aktualisiert wurde oder wo immer Sie darauf zugreifen, um Benachrichtigungen zu senden.Verwenden Sie beispielsweise Folgendes, um das Gerätetoken beim Start der App zu aktualisieren. Daher wird es immer richtig aktualisiert.
quelle
deviceToken
deklariert?onSuccess
leer?onSuccess
s - ich bezog mich auf das innere (das leer ist))Sie müssen auch die Datei build.gradle ändern und die verwendete Android SDK-Version hinzufügen:
Das hat in meinem Fall wie ein Zauber gewirkt.
quelle
Benachrichtigungen werden möglicherweise nicht angezeigt, wenn Sie die Benachrichtigungen schnell nacheinander anzeigen oder eine vorhandene stornieren und sie dann sofort wieder anzeigen (z. B. um eine Heads-up-Benachrichtigung auszulösen, um den Benutzer über eine Änderung einer laufenden Benachrichtigung zu benachrichtigen). In diesen Fällen ist das System kann sich entscheiden, nur die Meldung zu blockieren , wenn es darum geht , sie könnten für den Benutzer zu überwältigend / spammy werden.
Bitte beachten Sie, dass dieses Verhalten zumindest auf Lager Android (getestet mit 10) von außen etwas zufällig aussieht: Es passiert nur manchmal und manchmal nicht. Ich vermute, es gibt einen sehr kurzen Zeitraum, in dem Sie nicht zu viele Benachrichtigungen senden dürfen. Ein Anruf
NotificationManager.cancel()
und dannNotificationManager.notify()
kann dann manchmal dieses Verhalten verursachen.Wenn Sie die Option haben, brechen Sie beim Aktualisieren einer Benachrichtigung diese nicht vorher ab, sondern rufen Sie einfach
NotificationManager.notify()
mit der aktualisierten Benachrichtigung an. Dies scheint die oben erwähnte Blockierung durch das System nicht auszulösen.quelle
Wenn Sie während der Verwendung eines Benachrichtigungskanals Version> = Android 8.1 (Oreo) verwenden, setzen Sie dessen Bedeutung auf hoch:
quelle