У меня есть несколько уведомлений Android, но когда я отправляю сообщение со своего веб-сервера, устройство Android создает новый значок уведомления в строке состояния. Я хочу подсчитать количество непрочитанных уведомлений, отобразить их на statusbar
с одним значком, и когда уведомление будет прочитано, уведомление должно изменить количество непрочитанных уведомлений. Как мне это сделать? На этом изображении он выглядит как «3 Others»: Значок уведомления
Как подсчитать количество уведомлений и отобразить один значок в Android?
Ответы (3)
Ознакомьтесь с ответом здесь: Как дать счетчик если имеется более одного уведомления
Вам просто нужно установить 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 (см. руководство). Чтобы проверить, когда пользователь очищает уведомления, необходимо использовать Уведомление. Builder, который доступен только в API уровня 11.
NotificationCompat
в пакете поддержки Android. developer.android.com/intl/es/ ссылка/android/поддержка/v4/приложение/
- person Bharath Mg; 13.02.2014
Ну, эти коды работают для меня:
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;
отвечает за подсчет уведомлений
Вам понадобится разное растровое изображение для каждого числа, и установите значок для отображения растрового изображения, соответствующего количеству оставшихся уведомлений.
Чтобы отслеживать уведомления, вы можете просто установить счетчик в SharedPreferences, прибавлять к нему с каждым новым уведомлением и уменьшать на единицу при прочтении уведомления (или до нуля, если вы показываете все уведомления сразу).