149 votes

Les notifications Android ne s'affichent pas

J'ai besoin d'un programme qui ajoute une notification sur Android. Et lorsque quelqu'un clique sur la notification, cela doit le conduire à ma deuxième activité.

J'ai établi un code. La notification devrait fonctionner, mais pour une raison quelconque, elle ne fonctionne pas. Le site Notification n'apparaît pas du tout. Je ne sais pas ce que je rate.

Code de ces fichiers :

Notification n = new Notification.Builder(this)
        .setContentTitle("New mail from " + "test@gmail.com")
        .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);

2voto

Ashwin Balani Points 86

Vous devez également modifier le fichier build.gradle, et y ajouter la version du SDK Android utilisé :

implementation 'com.android.support:appcompat-v7:28.0.0'

Cela a marché comme un charme dans mon cas.

1voto

ƒernando Valle Points 905

Je pense que vous oubliez le

addAction(int icon, CharSequence title, PendingIntent intent)

Regardez ici : Ajouter une action

1voto

J'ai eu le même problème avec mon application Android. J'essayais les notifications et j'ai constaté que les notifications s'affichaient sur mon émulateur Android qui exécute un Android 7.0 (Nougat), alors qu'il ne fonctionnait pas sur mon téléphone qui avait Android 8.1 (Oreo).

Après avoir lu la documentation, j'ai découvert qu'Android avait une fonctionnalité appelée canal de notification, sans laquelle les notifications ne s'affichent pas sur les appareils Oreo. Vous trouverez ci-dessous le lien vers la documentation officielle d'Android sur les canaux de notification.

1voto

DragonFire Points 496

Pour moi, c'était un problème avec deviceToken . Veuillez vérifier que le jeton de dispositif du récepteur et de l'émetteur est correctement mis à jour dans votre base de données ou à l'endroit où vous y accédez pour envoyer des notifications.

Par exemple, utilisez ce qui suit pour mettre à jour le jeton du dispositif au lancement de l'application. Ainsi, il sera toujours mis à jour correctement.

// Device token for push notifications
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(
  new OnSuccessListener<InstanceIdResult>() {

    @Override
    public void onSuccess(InstanceIdResult instanceIdResult) {

        deviceToken = instanceIdResult.getToken();

        // Insert device token into Firebase database
        fbDbRefRoot.child("user_detail_profile").child(currentUserId).child("device_token")).setValue(deviceToken)
                .addOnSuccessListener(
                  new OnSuccessListener<Void>() {

                    @Override
                    public void onSuccess(Void aVoid) {

                    }
                });
    }
});

1voto

Kimutai Points 21

J'ai rencontré un problème similaire au vôtre et en cherchant une solution j'ai trouvé ces réponses mais elles n'étaient pas aussi directes que je l'espérais mais cela donne une idée ; Vos notifications peuvent ne pas s'afficher car pour les versions >=8 les notifications sont faites relativement différemment il y a une NotificationChannel qui facilite la gestion des notifications ceci m'a aidé . Bon codage.

void Note(){
    //Creating a notification channel
    NotificationChannel channel=new NotificationChannel("channel1",
                                                        "hello",
                                                        NotificationManager.IMPORTANCE_HIGH);
    NotificationManager manager=(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    manager.createNotificationChannel(channel); 

    //Creating the notification object
    NotificationCompat.Builder notification=new NotificationCompat.Builder(this,"channel1");
    //notification.setAutoCancel(true);
    notification.setContentTitle("Hi this is a notification");
    notification.setContentText("Hello you");
    notification.setSmallIcon(R.drawable.ic_launcher_foreground);   

    //make the notification manager to issue a notification on the notification's channel
    manager.notify(121,notification.build());
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X