对于我的应用,我使用一个通知ID,以免弄乱用户的通知菜单。我的每个通知都有Ticker Text。如果我的应用程序没有通知,并且用户收到通知,则会显示自动收报机文本。当通知已存在且仅更新时,不会显示自动收报机文本。
我做了一个非常hacky的工作,在我通知之前我取消了通知,但这最终导致振动的非常明显的滞后。
目前我的通知方式如下:
mBuilder.setSmallIcon(R.drawable.actionbar_logo)
.setContentTitle(extras.getString("title"))
.setContentText(extras.getString("summary"))
.setAutoCancel(true)
.setStyle(new NotificationCompat.BigTextStyle()
.bigText(extras.getString("extended_text"))
)
.setLights(Color.WHITE, NOTIF_LIGHT_INTERVAL, NOTIF_LIGHT_INTERVAL)
.setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE);
Intent intent = new Intent(this, MainActivity.class);
intent.putExtra("mainActivityNotification", true);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent contentIntent = PendingIntent.getActivity(this, 424242, intent, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(contentIntent);
final Notification notification = mBuilder.build();
notification.tickerText = extras.getString("title") + "\n" +
extras.getString("summary") + "\n" +
extras.getString("post_body");
mNotificationManager.notify(GATE_NOTIFICATION_ID, notification);
答案 0 :(得分:3)
Android如果与以前相同,则不再显示滚动条文本。
您可以使用Notification.Builder
类的 setTicker API,而不是使用Notification
对象构建滚动条文本,因为添加了Notification.Builder
以便更容易构建通知。
如果您的意图是重新显示相同的滚动条文本(来自之前发布的通知),那么只需添加以下行:
mNotificationManager.notify(GATE_NOTIFICATION_ID, mBuilder.build());
发布第一个通知后。
因此,您的完整代码如下所示:
mBuilder.setSmallIcon(R.drawable.actionbar_logo)
.setContentTitle(extras.getString("title"))
.setContentText(extras.getString("summary"))
.setAutoCancel(true)
.setStyle(new NotificationCompat.BigTextStyle()
.bigText(extras.getString("extended_text"))
) //consider using setTicker here
.setLights(Color.WHITE, NOTIF_LIGHT_INTERVAL, NOTIF_LIGHT_INTERVAL)
.setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE);
Intent intent = new Intent(this, MainActivity.class);
intent.putExtra("mainActivityNotification", true);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent contentIntent = PendingIntent.getActivity(this, 424242, intent, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(contentIntent);
final Notification notification = mBuilder.build();
//consider using setTicker of Notification.Builder
notification.tickerText = extras.getString("title") + "\n" +
extras.getString("summary") + "\n" +
extras.getString("post_body");
mNotificationManager.notify(GATE_NOTIFICATION_ID, notification);
//second time onward, add your changed content like setContentText, setTicker etc.
mNotificationManager.notify(GATE_NOTIFICATION_ID, mBuilder.build());