Android Notification按钮未显示

时间:2013-08-15 09:28:55

标签: android button notifications action

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

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

7 个答案:

答案 0 :(得分:123)

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

答案 1 :(得分:27)

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

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

因此,为了强制通知显示在Big View中,我们所要做的就是将其放在通知列表的顶部。这可以通过将When属性设置为0来完成,这使其成为通知中最早的属性! (有时虽然我们可能不想要这个)。所以请致电

setWhen(0)

通知你已经完成了。

答案 2 :(得分:23)

当您编辑文本时,如果列表中存在任何正在进行的通知,例如媒体播放器控件或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();

答案 3 :(得分:16)

Just do this :::

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

如果您想知道为什么“按钮”不与指定的图标一起显示(仅显示文本-甚至不显示为按钮,没有可见的边框-材质设计如此推测),可能是因为android决定放弃了显示图标,而不在addAction-Method的任何地方记录这种弃用情况。

上面(至少7年前)接受的答案中,至少没有一个在sdk-28(android 10)上对我显示任何图标-因此,我认为除非确定,否则这肯定是一个无证设计的决定:)

答案 6 :(得分:-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);

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