Как посчитать количество уведомлений и отобразить один значок в Android? - PullRequest
10 голосов
/ 17 июня 2011

У меня несколько уведомлений Android, но когда я отправляю сообщение с моего веб-сервера, устройство Android создает новый значок уведомления в строке состояния. Я хочу посчитать количество непрочитанных уведомлений, отобразить их на statusbar одним значком, и когда уведомление прочитано, уведомление должно изменить количество непрочитанных уведомлений. Как мне это сделать? Это выглядит как «3 Другие» на этом изображении: Значок уведомления

Ответы [ 3 ]

8 голосов
/ 06 сентября 2011

Проверьте ответ здесь: Как выставить счетчик, если имеется более одного Уведомления

Вам просто нужно установить 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 с тем же идентификатором все время. Как говорится в документации, идентификатор является уникальным идентификатором для этого уведомления в вашем приложении. Если вы повторно используете тот же идентификатор, он просто обновит текст и номер для этого уведомления.

Чтобы проверить, когда пользователь нажимает на уведомление, необходимо указать PendingIntent (см. Учебник ). Чтобы проверить, когда пользователь очищает уведомления, вам нужно использовать Notification.Builder , который доступен только на уровне API 11.

3 голосов
/ 14 июня 2015

Хорошо, эти коды работают для меня:

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; является ответственным за подсчет уведомления

0 голосов
/ 17 июня 2011

Вам понадобится разное растровое изображение для каждого номера и установите значок, чтобы отобразить растровое изображение, соответствующее количеству оставшихся уведомлений.

Чтобы отслеживать уведомления, вы можете просто установить счетчик в SharedPreferences, добавлять к нему каждое новое уведомление и уменьшать на единицу при чтении уведомления (или до нуля, если вы показываете все уведомления сразу).

...