11

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

4

3 回答 3

9

在此处查看答案:如果存在多个通知,如何提供计数器

你只需要设置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(参见教程)。要检查用户何时清除通知,您需要使用仅在 Api Level 11 中可用的Notification.Builder 。

于 2011-09-06T08:31:06.433 回答
3

那么这段代码对我有用:

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);

按照此链接获取完整教程。
我认为n.number=++count;是负责计算通知的人

于 2015-06-14T12:22:57.077 回答
-1

您需要为每个数字使用不同的位图,并设置图标以显示与剩余通知数量相对应的位图。

要跟踪通知,您可以简单地在 SharedPreferences 中设置一个计数器,在每个新通知中添加一个计数器,并在读取通知时减一(如果一次显示所有通知,则减为零)。

于 2011-06-17T04:14:05.073 回答