NotificationBuilder或NotificationCompat.Builder不显示操作

时间:2012-12-21 18:48:32

标签: android

玩这个三个小时,无法弄清楚是什么问题。

private static Notification buildNotification(Context context) {
    NotificationCompat.Builder b = new NotificationCompat.Builder(context);
    b.setContentIntent(PendingIntent.getActivity(
            context, 0, new Intent(context,  MyActivity.class),
                PendingIntent.FLAG_UPDATE_CURRENT));
    b.setTicker(context.getString(R.string.update_notification_title));
    b.setContentTitle(context.getString(R.string.update_notification_title));
    b.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.drawable.icon));
    b.setSmallIcon(R.drawable.icon);
    b.setOngoing(true);
    b.setAutoCancel(false);
    b.setProgress(100, 0, true);

    Intent cancel = new Intent(context,  Updater.class);
    cancel.putExtra(EXTRA_CANCEL, true);
    b.addAction(
            R.drawable.discard_holo_dark,
            context.getString(R.string.ui_cancel),
            PendingIntent.getService(context, 0, cancel, PendingIntent.FLAG_UPDATE_CURRENT));
    return b.build();
}

我也尝试了JellyBean上的默认NotificationBuilder。 也试图将PendingIntent更改为getActivity并尝试替换图标和文本。尝试setOngoing(false),没有进展和autoCancel。仍然没有按钮的运气。试过四种不同的设备。

6 个答案:

答案 0 :(得分:11)

NotificationCompat.Builder不会在Android上显示操作< 4.1

在某些设备上,如果有多个通知,则带有操作的通知会显示为已折叠。用两个指针向下滑动通知会扩展操作。

答案 1 :(得分:2)

我刚刚测试过,当调试模式打开并且三星Galaxy Note II(4.1.2)连接到我的PC抛出USB(使用Eclipse ADT进行开发)时,通知操作按钮未显示(带.addAction) 。相反,无论设备是否未连接但启用了调试模式,都会显示操作按钮。我不知道原因。

一个用于测试此问题的测试版应用程序可以帮助您解决设备问题,"Jelly Bean Notification Test"可以在Google Play上使用GitHub上的source code获得。感谢它的创造者。

此应用程序也在三星Galaxy SIII上测试,显示通知操作按钮。请注意,此设备已关闭调试模式,并且未连接到PC进行开发。

答案 2 :(得分:2)

我相信实际上有几个答案,都是真的:

  • Doctoror Drive:“在某些设备上,如果有多个通知,则带有操作的通知会显示为已折叠。使用两个指针向下向下滑动通知可以扩展操作。”
  • 如果您将通知的优先级设置为高,它将始终显示按钮,您无需滑动即可展开(在上面的示例中):

    b.setPriority(Notification.PRIORITY_HIGH); //b.setPriority(NotificationCompat.PRIORITY_HIGH);//this if you're using Compat

  • 上面有人说这可能不适用于平板电脑 - 我不确定这是否属实,但有些事情需要考虑和测试

答案 3 :(得分:1)

我看不到您实际使用此通知的位置。您必须致电NotificationManager#notify()

答案 4 :(得分:1)

我发现平板电脑没有显示按钮。即使使用示例代码" Jelly Bean Notification Test",行为也是一样的。我测试了三星P3100和Nexus7。虽然相同的代码适用于大多数手机,如LG P880。但不是所有的。它没有在Sony Xperia Z等手机上播放。

答案 5 :(得分:1)

当通知窗口中有很多通知时,似乎通知将处于折叠状态并隐藏操作,当存在很少或没有其他通知时,它们可能会被展开,至少这是我在Jelly中观察到的行为bean 4.1.2