8
votes

Android - Comment mettre à jour le numéro de notification

Bonjour, je veux montrer toute la notification en une seule vue. Et souhaitez mettre à jour le numéro de notification dans la barre d'état ... Son mise à jour de toutes les infos mais montrant le numéro toujours 1 .. S'il vous plaît dites-moi comment le résoudre .. .

@Override
public void onReceive(Context context, Intent intent)
{
    //Random randGen = new Random();
    //int notify_id = randGen.nextInt();
    NotificationManager notificationManager = (NotificationManager)
        context.getSystemService(Activity.NOTIFICATION_SERVICE);
    String title = intent.getStringExtra(TableUtils.KEY_TITLE);
    String occasion = intent.getStringExtra(TableUtils.KEY_OCCASION);
    Notification notification = 
        new Notification(R.drawable.icon, "Love Cardz" , 
                         System.currentTimeMillis());
    // notification.vibrate = new long[]{100,250,300,330,390,420,500};
    notification.flags |= Notification.FLAG_AUTO_CANCEL;
    notification.number+=1;
    Intent intent1 = new Intent(context, ThemesBrowserActivity.class);
    PendingIntent activity = 
        PendingIntent.getActivity(context, 1 , intent1, 
                                  PendingIntent.FLAG_UPDATE_CURRENT);
    notification.setLatestEventInfo(context, occasion, title, activity);
    notificationManager.notify(1, notification);
}


0 commentaires

3 Réponses :


4
votes

Ceci est mon code et ça marche. Je n'ai testé que sur les anciennes versions Android. Je soupçonne des versions plus récentes Le badge "nombre" a été invisible, mais je n'ai pas eu la chance de le tester. XXX

Il est également facile de mettre à jour la notification plus tard: vous Je dois juste appeler la méthode à nouveau avec de nouvelles valeurs. Le nombre sera affiché dans le badge d'icônes de notification si et uniquement s'il était supérieur à zéro lorsque la notification a été créée.

Similaire, le badge de numéros ne sera pas masqué (le numéro sera, que vous Vous définissez le numéro sur un chiffre inférieur à 1. Définir peut-être la notification avant de ré-montrer que cela pourrait le corriger.


0 commentaires

0
votes

Vous devez garder une trace du compte. L'incrément que vous essayez de jouer à notif.Number ne fonctionne pas, car cet état n'est pas disponible (c'est-à-dire Notif.number est toujours 0, puis vous l'incrémentez à 1). Gardez une trace du nombre quelque part dans votre application (préférences partagées, peut-être), et d'incrémenter et de le stocker là-bas, alors lorsque vous créez la notification, définissez

notif.number = myStoredValueForWhatShouldShowInNumber;


1 commentaires

Comment réinitialiser le numéro lorsque la nouvelle notification est livrée avec une carte de notification différente



19
votes

Vous devez garder une trace du compte. Vous pouvez étendre la classe d'application: xxx

et vous devez modifier l'ondeceive: xxx

et vous pouvez réinitialiser le compte lorsque l'utilisateur s'ouvrira La notification: xxx


5 commentaires

Jolie ridicule Comment le framework n'a pas de simple, getNotifications (INT id) appelez simplement vérifier cela ...


Malheureusement, si la demande a été tuée, le comptoir réinitialise ... devrait probablement sauvegarder sur SharedPreference pour la persistance


Comment pouvez-vous savoir quand la notification a été ouverte pour réinitialiser le comptoir ...?


@Micror, vous devez mettre la classe d'activité dans le cadre de votre intention de votre en PLANDINTENT . Stackoverflow.com/Questtions/7184963 / ...


Donc, ce que vous dites, c'est que dans l'Oncreate () ou quelque chose de l'activité, je devrais réinitialiser le comptoir? J'espérais qu'il y avait un moyen de le faire, pas de cette façon.