web-dev-qa-db-fra.com

Les boutons de notification Android ne s'affichent pas

Ceci est mon code pour configurer une notification avec des boutons.

Intent receiverIntent = new Intent(ctx, ResponsivePrefsActivity.class);
        PendingIntent pReceiverIntent = PendingIntent.getActivity(ctx, 1, receiverIntent, 0);
        Intent clearIntent = new Intent(ctx, ResponsivePrefsActivity.class);
        clearIntent.setAction("clear");
        PendingIntent pClearIntent = PendingIntent.getActivity(ctx, 1, clearIntent, 0);

        Intent colorsIntent = new Intent(ctx, ResponsivePrefsActivity.class);
        colorsIntent.setAction("colors");
        PendingIntent pColorsIntent = PendingIntent.getActivity(ctx, 1, colorsIntent, 0);

        Intent animationIntent = new Intent(ctx, ResponsivePrefsActivity.class);
        animationIntent.setAction("animation");
        PendingIntent pAnimation = PendingIntent.getActivity(ctx, 1, animationIntent, 0);

        Notification.Builder builder;
        builder = new Notification.Builder(ctx).setSmallIcon(R.drawable.ic_launcher).setAutoCancel(false)
                .setContentTitle("Draw Me: A Live Wallpaper").setContentText("Never get bored again!")
                .setContentIntent(pReceiverIntent).addAction(R.raw.ic_menu_close_clear_cancel, "Clear", pClearIntent)
                .addAction(R.raw.ic_menu_edit, "Colors", pColorsIntent).addAction(R.raw.ic_menu_play_clip, "Animation", pAnimation);
        Notification notification = builder.build();

        NotificationManager notificationManager = (NotificationManager) ctx.getSystemService(Context.NOTIFICATION_SERVICE);

        notificationManager.notify(0, notification);

La notification apparaît mais pas les boutons. Mon appareil a Android 4.1.1 J'ai configuré cette notification dans un fragment. Qu'est-ce que je fais mal? Merci!

34
DraganescuValentin

Laissez-moi vous dire quelque chose qui est vraiment maladroit… .. Si vous avez quelque chose dans votre notification en cours, vous ne verrez pas les boutons… .. Cela se produit généralement lorsque vous avez un téléphone connecté à un PC via USB… .. J'espère que cela résoudra ton problème

122
CommonMan

Juste un rappel pour toute personne ayant un problème similaire . Selon Android Guide de notifications , les notifications peuvent apparaître dans deux styles:

  • Affichage normal, où les boutons d'action n'apparaissent pas par défaut (et l'utilisateur doit développer la notification pour qu'ils apparaissent)
  • Vue agrandie, visible si la notification se trouve en premier dans la liste des notifications ou si l'utilisateur a développé la notification.

Par conséquent, pour que la notification apparaisse dans la vue agrandie, il suffit de la placer en haut de la liste des notifications. Pour ce faire, définissez la propriété When sur 0, ce qui en fait la plus ancienne notification! (Parfois même si nous ne voulons pas cela). Alors appelez 

setWhen(0)

à votre notification et vous avez terminé. 

27
paulahniuk

Les boutons n'apparaîtront pas si une notification en cours est présente dans la liste, telle qu'un contrôle de lecteur multimédia, ou les options du commutateur IME lorsque vous modifiez du texte.

Heureusement, cela peut être surmonté simplement en fixant la priorité de la notification Nice et High. Je n'ai jamais utilisé Notification.PRIORITY_MAX que pour résoudre ce problème, mais PRIORITY_HIGH semble également fonctionner. Définissez-le comme ceci:

Notification notification = new Notification.Builder(myContext)
.setContentTitle(res.getString(R.string.my_title))
.setPriority(Notification.PRIORITY_MAX)
//The rest of your options
.build();
23
Captain Blammo

Il suffit de faire ceci :::

.setPriority(Notification.PRIORITY_MAX)
.setWhen(0)

le code complet est:

Notification noti = new Notification.Builder(this)
            .setContentTitle("New mail from " + "[email protected]")
            .setContentText("Subject").setSmallIcon(R.drawable.ic_launcher)
            .setContentIntent(pIntent)
            .setPriority(Notification.PRIORITY_MAX)
            .setWhen(0)
            .addAction(R.drawable.ic_launcher, "Call", pIntent)
            .addAction(R.drawable.ic_launcher, "More", pIntent)
            .addAction(R.drawable.ic_launcher, "And more", pIntent).build();
16
user2190487

Dans mon cas, les boutons d'action ne sont pas apparus car j'utilisais une vue personnalisée pour le contenu de la notification avec RemoteViews ()

0
s-hunter