J'ai besoin d'un programme qui ajoutera une notification sur Android. Et quand quelqu'un clique sur la notification, cela devrait le conduire à ma deuxième activité.
J'ai établi le code. La notification devrait fonctionner, mais pour une raison quelconque, elle ne fonctionne pas. Le Notification
ne montre pas du tout. Je ne sais pas ce qui me manque.
Code de ces fichiers:
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
la source
la source
Activity
pas lancé? N'est-ceNotification
pas visible?Réponses:
Le code ne fonctionnera pas sans icône. Alors, ajoutez l'
setSmallIcon
appel à la chaîne de construction comme ceci pour que cela fonctionne:Android Oreo (8.0) et supérieur
Android 8 a introduit une nouvelle exigence de définition de la
channelId
propriété à l'aide d'un fichierNotificationChannel
.la source
setChannelId
sont nécessaires. Avant d'ajouter cela, la notification s'affiche sur mon appareil SONY mais pas sur l'appareil SAMSUNG.Android.OS.BuildVersionCodes.O
égale 26?if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){ mBuilder.setChannelId(channelId); }
car sans cette vérification, la notification n'apparaîtra pas, même si l'API de votre appareil> = 26.En fait, la réponse de ƒernando Valle ne semble pas correcte. Là encore, votre question est trop vague parce que vous omettez de mentionner ce qui ne va pas ou ce qui ne fonctionne pas.
En regardant votre code, je suppose
Notification
que cela ne s'affiche tout simplement pas.Votre notification ne s'affiche pas, car vous n'avez pas fourni d'icône. Même si la documentation du SDK ne mentionne pas qu'il est nécessaire, c'est en fait tout à fait le cas et vous
Notification
ne serez pas affiché sans un.addAction
n'est disponible que depuis la version 4.1. Avant cela, vous utilisiezPendingIntent
pour lancer un fichierActivity
. Vous semblez spécifier aPendingIntent
, votre problème est donc ailleurs. Logiquement, il faut en conclure que c'est l'icône manquante.la source
Notification.Builder
, nonNotificationCompat.Builder
, comme vous le suggérez. Ce n'est pas parce qu'il existe une bibliothèque de compatibilité et qu'elle peut être utilisée que la fonction est disponible dans l'API normale. Le lien que vous fournissez le stipule en fait. Cette question est clairement liéeNotification.Builder
, comme le montre l'exemple. Et la bibliothèque de compatibilité n'a probablement inclus cette fonction qu'après la disponibilité de la version 4.1. Votre réponse est trompeuse, car vous suggérez maintenant qu'elle est disponible depuis 2.3.Il vous manquait la petite icône. J'ai fait la même erreur et l'étape ci-dessus l'a résolue.
Selon la documentation officielle: un objet Notification doit contenir les éléments suivants:
Une petite icône, définie par setSmallIcon ()
Un titre, défini par setContentTitle ()
Texte détaillé, défini par setContentText ()
Sur Android 8.0 (niveau d'API 26) et supérieur , un ID de canal de notification valide, défini par setChannelId () ou fourni dans le constructeur NotificationCompat.Builder lors de la création d'un canal.
Voir http://developer.android.com/guide/topics/ui/notifiers/notifications.html
la source
Cela m'a fait trébucher aujourd'hui, mais j'ai réalisé que c'était parce que sur Android 9.0 (Pie), Ne pas déranger par défaut masque également toutes les notifications, plutôt que de simplement les faire taire comme dans Android 8.1 (Oreo) et avant. Cela ne s'applique pas aux notifications.
J'aime avoir DND activé pour mon appareil de développement, alors aller dans les paramètres DND et modifier le paramètre pour simplement faire taire les notifications (mais pas les masquer) l'a corrigé pour moi.
la source
La création de canaux de notification est obligatoire pour les versions d' Android après Android 8.1 (Oreo) pour rendre les notifications visibles. Si les notifications ne sont pas visibles dans votre application pour Oreo + Androids, vous devez appeler la fonction suivante lorsque votre application démarre -
la source
Je pense que tu oublies le
Regardez ici: Ajouter une action
la source
addAction()
n'est pas disponible surNotification.Builder
.Action
instance avec laquelle vous pouvez créerNotification.Action.Builder
. PS, utilisez toujours l'alternative Compat (c.-à-d. NotificationCompat), car Google a tendance à corriger les bogues et à fournir une meilleure compatibilité avec eux.setContentIntent(null)
avec le générateur.J'ai eu le même problème avec mon application Android. J'essayais des notifications et j'ai constaté que les notifications s'affichaient sur mon émulateur Android qui exécutait un système Android 7.0 (Nougat), alors qu'il ne fonctionnait pas sur mon téléphone doté d' Android 8.1 (Oreo).
Après avoir lu la documentation, j'ai trouvé qu'Android avait une fonctionnalité appelée canal de notification, sans laquelle les notifications ne s'afficheraient pas sur les appareils Oreo. Vous trouverez ci-dessous le lien vers la documentation Android officielle sur les canaux de notification.
la source
Pour moi, c'était un problème avec
deviceToken
. Veuillez vérifier si le jeton du récepteur et de l'expéditeur est correctement mis à jour dans votre base de données ou partout où vous y accédez pour envoyer des notifications.Par exemple, utilisez ce qui suit pour mettre à jour le jeton d'appareil au lancement de l'application. Par conséquent, il sera toujours mis à jour correctement.
la source
deviceToken
déclaré?onSuccess
vide?onSuccess
s - je faisais référence à l'intérieur (qui est vide))Vous devez également modifier le fichier build.gradle et y ajouter la version utilisée du SDK Android:
Cela a fonctionné comme un charme dans mon cas.
la source
Les notifications peuvent ne pas s'afficher si vous affichez les notifications rapidement l'une après l'autre ou si vous annulez une notification existante, puis si vous l'affichez à nouveau immédiatement (par exemple, pour déclencher une notification pour informer l'utilisateur d'un changement dans une notification en cours). Dans ces cas, le système peut décider de simplement bloquer la notification lorsqu'il estime qu'elle risque de devenir trop envahissante / spammée pour l'utilisateur.
Veuillez noter qu'au moins en stock Android (testé avec 10) de l'extérieur, ce comportement semble un peu aléatoire: cela arrive parfois et parfois non. Je suppose qu'il y a un seuil de temps très court pendant lequel vous n'êtes pas autorisé à envoyer trop de notifications. L'appel
NotificationManager.cancel()
et puisNotificationManager.notify()
peut parfois provoquer ce comportement.Si vous avez la possibilité, lors de la mise à jour d'une notification, ne l'annulez pas avant, mais appelez simplement
NotificationManager.notify()
avec la notification mise à jour. Cela ne semble pas déclencher le blocage mentionné ci-dessus par le système.la source
Si vous utilisez la version> = Android 8.1 (Oreo) lorsque vous utilisez un canal de notification, définissez son importance sur élevé:
la source