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!
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
Juste un rappel pour toute personne ayant un problème similaire . Selon Android Guide de notifications , les notifications peuvent apparaître dans deux styles:
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é.
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();
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();
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 ()