玩这个三个小时,无法弄清楚是什么问题。
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。仍然没有按钮的运气。试过四种不同的设备。
答案 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)
我相信实际上有几个答案,都是真的:
如果您将通知的优先级设置为高,它将始终显示按钮,您无需滑动即可展开(在上面的示例中):
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