43

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

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

4

8 回答 8

132

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

于 2013-08-28T00:38:06.760 回答
30

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

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

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

setWhen(0)

到您的通知,您就完成了。

于 2013-09-03T23:30:27.380 回答
25

当列表中存在任何正在进行的通知(例如媒体播放器控件或编辑文本时的 IME 切换器选项)时,这些按钮不会出现。

幸运的是,这可以通过将通知的优先级设置为 nice 和 high 来克服。我只使用过 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();
于 2013-12-17T00:16:29.273 回答
18

就这样做:::

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

完整代码是:

Notification noti = new Notification.Builder(this)
            .setContentTitle("New mail from " + "test@gmail.com")
            .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();
于 2014-09-09T13:03:15.150 回答
1

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

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

于 2019-12-11T00:01:46.007 回答
0

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

于 2018-04-22T23:09:04.080 回答
0

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

于 2021-10-17T21:44:50.543 回答
-1

只需在您的code

Notification n = new Notification.Builder(this)
                .setSmallIcon(R.drawable.icon)
                .setContentTitle("New mail from " + "test@gmail.com")
                .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);

在此添加您需要的内容..希望对您有所帮助..

于 2013-08-15T14:52:27.397 回答