Pergunta

Tenho várias notificações do Android, mas quando envio uma mensagem do meu servidor da web, o dispositivo Android cria um novo ícone de notificação na barra de status.Desejo contar o número de notificações não lidas, exibi-lo em statusbar com um único ícone e, quando uma notificação é lida, a notificação deve alterar o número de contagens de notificações não lidas.Como eu posso fazer isso?Ele se parece com "3 outros" nesta imagem: Ícone de notificação

Foi útil?

Solução

Confira a resposta aqui: Como para contra-atacar se houver mais de uma notificação

Você só precisa definir 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);

Você deve enviar sua notificação através do método NotificationManager.notify, com o mesmo id o tempo todo. Como diz a documentação, o id é um identificador exclusivo para essa notificação em seu aplicativo. Se você reutilizar o mesmo id, ele apenas atualizará o texto e o número dessa notificação.

Para verificar quando o usuário clica na notificação, você precisa fornecer um PendingIntent (consulte o tutorial ). Para verificar quando o usuário limpa as notificações, você precisa usar a Notificação. Builder que está disponível apenas no Api Nível 11.

Outras dicas

Bem, esses códigos funcionam para mim:

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

Siga este link para o tutorial completo.
Acho que o n.number=++count; é o responsável por contar a notificação

Você precisará de um bitmap diferente para cada número e definirá o ícone para mostrar o bitmap que corresponde ao número de notificações restantes.

Para controlar as notificações, você pode simplesmente definir um contador em SharedPreferences, adicioná-lo a cada nova notificação e reduzir em um quando uma notificação for lida (ou zero se você mostrar todas as notificações de uma vez).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top