如何计算Android中的通知数量和显示单个图标?

时间:2011-06-17 03:54:53

标签: android eclipse android-notifications android-notification-bar

我有多个Android通知,但是当我从我的网络服务器发送消息时,Android设备会在状态栏上创建一个新的通知图标。我想计算未读通知的数量,使用单个图标在statusbar上显示,并且在读取通知时,通知必须更改未读通知计数。我该怎么做?在这张图片中看起来像“3其他人”:Notification Icon

3 个答案:

答案 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中设置一个计数器,在每个新通知中添加一个计数器,并在读取通知时减少一个(如果一次显示所有通知,则减少为零)。