4

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

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),没有进展和自动取消。按钮仍然没有运气。在四种不同的设备上进行了尝试。

4

6 回答 6

11

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

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

于 2012-12-24T13:36:29.337 回答
2

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

一个测试应用程序来测试这个,它有助于解决我的设备问题,是“Jelly Bean Notification Test”,它可以在 Google Play 上使用,源代码在 GitHub 上。感谢它的创造者。

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

于 2013-04-19T09:01:46.560 回答
2

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

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

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

  • 上面有人说这可能不适用于平板电脑 - 我不确定这是否属实,但一定要考虑和测试
于 2015-01-17T17:42:24.777 回答
1

我看不到您实际在哪里使用此通知。你必须打电话NotificationManager#notify()

于 2012-12-21T18:55:21.570 回答
1

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

于 2013-10-28T09:40:20.343 回答
1

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

于 2013-11-27T08:37:44.840 回答