我有多个Android通知,但是当我从我的网络服务器发送消息时,Android设备会在状态栏上创建一个新的通知图标。我想计算未读通知的数量,使用单个图标在statusbar
上显示,并且在读取通知时,通知必须更改未读通知计数。我该怎么做?在这张图片中看起来像“3其他人”:Notification Icon
答案 0 :(得分:8)
在此处查看答案:How to give counter if more than one Notifications are there
您只需设置Notification.number
:
Notification notification = new Notification(R.drawable.direction, "Cool Notification",
System.currentTimeMillis());
/********LIKE THIS*********/
notification.number = notificationCount++;
/********LIKE THIS*********/
notification.setLatestEventInfo(context, "Cool Notification Title",
"updated notificaiton message", null);
NotificationManager nm = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
nm.notify(R.id.my_motification, notification);
您必须通过NotificationManager.notify
方法发送通知,并始终使用相同的ID。正如文档所述,id是应用程序中该通知的唯一标识符。如果您重复使用相同的ID,则只会更新该通知的文本和编号。
要检查用户何时点击通知,您需要提供PendingIntent(请参阅tutorial)。要检查用户何时清除通知,您需要使用仅在Api等级11中可用的Notification.Builder。
答案 1 :(得分:3)
这段代码对我有用:
int cnt = 0;
while (cnt < 2) cnt += port.Read(size, cnt, 2 - cnt);
按照此link获取完整教程
我认为Notification n = new Notification(R.drawable.yourownpicturehere,
getString(R.string.noticeMe),
System.currentTimeMillis());
PendingIntent i=PendingIntent.getActivity(this, 0,
new Intent(this, NotifyActivity.class),0);
n.setLatestEventInfo(getApplicationContext(),
getString(R.string.title),
getString(R.string.message), i);
n.number=++count;
n.flags |= Notification.FLAG_AUTO_CANCEL;
n.flags |= Notification.DEFAULT_SOUND;
n.flags |= Notification.DEFAULT_VIBRATE;
n.ledARGB = 0xff0000ff;
n.flags |= Notification.FLAG_SHOW_LIGHTS;
// Now invoke the Notification Service
String notifService = Context.NOTIFICATION_SERVICE;
NotificationManager mgr = (NotificationManager) getSystemService(notifService);
mgr.notify(NOTIFICATION_ID, n);
是负责计算通知的人
答案 2 :(得分:-1)
每个数字都需要一个不同的位图,并设置图标以显示与剩余通知数相对应的位图。
要跟踪通知,您只需在SharedPreferences中设置一个计数器,在每个新通知中添加一个计数器,并在读取通知时减少一个(如果一次显示所有通知,则减少为零)。