这是我设置带有按钮的通知的代码。
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);
通知显示但按钮不显示。我的设备有 Android 4.1.1 我在一个片段中设置了这个通知。我究竟做错了什么?谢谢!
让我告诉你一件非常尴尬的事。 如果您的持续通知中有任何内容,您将看不到按钮。 通常,当您通过 USB 将手机连接到 PC 时,就会发生这种情况。 希望这能解决您的问题
提醒任何有类似问题的人。 根据 Android Notifications Guide,通知可以以两种样式出现:
因此,为了强制通知出现在大视图中,我们所要做的就是将它放在通知列表的顶部。这可以通过将 When 属性设置为 0 来完成,这使它成为最旧的通知! (有时我们可能不希望这样)。所以打电话
setWhen(0)
您的通知,您就完成了。
当列表中存在任何持续通知时,按钮将不会出现,例如媒体播放器控件或编辑文本时的 IME 切换器选项。
幸运的是,这可以通过将通知的优先级设置得很好和高来简单地克服。我只使用过 Notification.PRIORITY_MAX 来解决这个问题,但 PRIORITY_HIGH 似乎也能正常工作。像这样设置:
Notification notification = new Notification.Builder(myContext)
.setContentTitle(res.getString(R.string.my_title))
.setPriority(Notification.PRIORITY_MAX)
//The rest of your options
.build();
就这样做:::
.setPriority(Notification.PRIORITY_MAX)
.setWhen(0)
完整代码是:
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();
如果你想知道为什么“按钮”没有显示指定的图标(只显示文本 - 甚至不是按钮,没有可见边框 - 我猜材料设计是这样说的)可能是因为 android 决定放弃显示图标,同时没有在 addAction-Method 的任何地方记录这种弃用。
至少上面接受的答案(从 7 年前开始)都没有让我在 sdk-28(android 10)上出现任何图标 - 所以我认为它必须是一个未记录的设计决定,除非另有证明:)
在我的例子中,操作按钮没有显示,因为我使用 RemoteViews() 的通知内容的自定义视图
就我而言,这是我添加的持久通知。如果您有持续显示的通知,则意味着不会显示操作。
我在
NotificationCompat.Builder
遇到这个问题,我做了以下几点,
添加以下行:
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setWhen(0)
删除以下行:
.setContentIntent(pendingIntent)
在这些更改之后,按钮显示在通知中。
只需在您的
code
中做一些这样的更改
Notification n = new Notification.Builder(this)
.setSmallIcon(R.drawable.icon)
.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 its selected
notificationManager.notify(0, n);
在此添加您需要的内容..我希望它能帮助您..