Android 通知按钮不显示

问题描述 投票:0回答:9

这是我设置带有按钮的通知的代码。

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 我在一个片段中设置了这个通知。我究竟做错了什么?谢谢!

android button notifications action
9个回答
132
投票

让我告诉你一件非常尴尬的事。 如果您的持续通知中有任何内容,您将看不到按钮。 通常,当您通过 USB 将手机连接到 PC 时,就会发生这种情况。 希望这能解决您的问题


30
投票

提醒任何有类似问题的人。 根据 Android Notifications Guide,通知可以以两种样式出现:

  • 普通视图,默认情况下不显示操作按钮(用户必须展开通知才能显示)
  • 大视图,如果通知在通知列表中位于第一位,或者用户展开了通知,则可见。

因此,为了强制通知出现在大视图中,我们所要做的就是将它放在通知列表的顶部。这可以通过将 When 属性设置为 0 来完成,这使它成为最旧的通知! (有时我们可能不希望这样)。所以打电话

setWhen(0)

您的通知,您就完成了。


25
投票

当列表中存在任何持续通知时,按钮将不会出现,例如媒体播放器控件或编辑文本时的 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();

18
投票

就这样做:::

.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();

1
投票

如果你想知道为什么“按钮”没有显示指定的图标(只显示文本 - 甚至不是按钮,没有可见边框 - 我猜材料设计是这样说的)可能是因为 android 决定放弃显示图标,同时没有在 addAction-Method 的任何地方记录这种弃用。

至少上面接受的答案(从 7 年前开始)都没有让我在 sdk-28(android 10)上出现任何图标 - 所以我认为它必须是一个未记录的设计决定,除非另有证明:)


0
投票

在我的例子中,操作按钮没有显示,因为我使用 RemoteViews() 的通知内容的自定义视图


0
投票

就我而言,这是我添加的持久通知。如果您有持续显示的通知,则意味着不会显示操作。


0
投票

我在

NotificationCompat.Builder
遇到这个问题,我做了以下几点,

添加以下行:

.setPriority(NotificationCompat.PRIORITY_HIGH)

.setWhen(0)

删除以下行:

.setContentIntent(pendingIntent)

在这些更改之后,按钮显示在通知中。


-1
投票

只需在您的

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);

在此添加您需要的内容..我希望它能帮助您..

© www.soinside.com 2019 - 2024. All rights reserved.