Dies ist mein Code zum Einrichten einer Benachrichtigung mit Schaltflächen.
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);
Die Benachrichtigung wird angezeigt, die Schaltflächen jedoch nicht. Mein Gerät verfügt über Android 4.1.1. Ich habe diese Benachrichtigung in einem Fragment eingerichtet. Was mache ich falsch? Vielen Dank!
Lassen Sie mich Ihnen etwas sagen, was wirklich unangenehm ist ... Wenn Sie etwas in Ihrer Laufenden Benachrichtigung haben, werden die Schaltflächen nicht angezeigt. Normalerweise geschieht dies, wenn Sie das Telefon über einen USB-Anschluss an den PC angeschlossen haben Ihr Problem
Nur eine Erinnerung für alle, die ein ähnliches Problem haben ... Wie in Android Notifications Guide können Benachrichtigungen in zwei Stilen erscheinen:
Um zu erzwingen, dass die Benachrichtigung in Big View angezeigt wird, müssen Sie sie einfach oben in der Benachrichtigungsliste platzieren. Sie können dies tun, indem Sie die When-Eigenschaft auf 0 setzen. Damit ist sie die älteste Benachrichtigung. (Manchmal wollen wir das vielleicht nicht). Also rufe
setWhen(0)
auf Ihre Benachrichtigung und Sie sind fertig.
Die Schaltflächen werden nicht angezeigt, wenn eine laufende Benachrichtigung in der Liste vorhanden ist, z. B. ein Media Player-Steuerelement oder die IME-Umschalteroptionen, wenn Sie Text bearbeiten.
Glücklicherweise kann dies durch die Festlegung der Priorität der Benachrichtigung Nizza und Hoch überwunden werden. Ich habe immer nur Notification.PRIORITY_MAX verwendet, um das zu umgehen, aber PRIORITY_HIGH scheint auch zu funktionieren. Setze es so:
Notification notification = new Notification.Builder(myContext)
.setContentTitle(res.getString(R.string.my_title))
.setPriority(Notification.PRIORITY_MAX)
//The rest of your options
.build();
Tu das einfach :::
.setPriority(Notification.PRIORITY_MAX)
.setWhen(0)
vollständiger Code ist:
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();
In meinem Fall wurden die Aktionsschaltflächen nicht angezeigt, da ich eine benutzerdefinierte Ansicht für den Benachrichtigungsinhalt mit RemoteViews () verwendet habe.