Est-il possible d’append un badge à une icône d’application dans Android?

Sur l’iPhone, vous pouvez append un badge numéroté à l’icône de l’application. Sur BlackBerry, j’ai réussi à peindre une image sur l’icône de l’application dans le programme. Je veux faire cela aussi pour Android. Je ne veux pas utiliser la barre de notification, car ce n’est pas quelque chose qui doit être notifié instantanément. Au lieu de cela, je veux juste que l’utilisateur soit capable de voir combien de nouveaux messages sont dans l’application simplement en regardant l’icône de l’application.

Malheureusement, Android ne permet pas de modifier l’icône de l’application car celle-ci est scellée dans l’APK une fois le programme compilé. Il n’y a aucun moyen de le modifier par programmation en un «dessinable».

Vous pouvez atteindre votre objective en utilisant un widget au lieu d’une icône. Les widgets sont hautement personnalisables et peuvent faire ce que vous voulez.

Il y a une brève discussion sur la différence entre la notification d’icône iPhone et l’utilisation de widgets ici:

http://www.cnet.com/8301-19736_1-10278814-251.html

Comme vous le constaterez, il n’y a pratiquement aucune différence entre l’utilisation d’un widget ou d’une icône, car ils peuvent avoir la même taille et se ressembler.

Cela peut également être fait pour Sony Xperia Home. J’ai blogué à ce sujet ici , mais les parties importantes sont ci-dessous. Les appareils Sony utilisent une classe nommée BadgeReciever .

  1. Déclarez l’autorisation com.sonyericsson.home.permission.BROADCAST_BADGE dans votre fichier manifeste:

  2. Diffuser une Intent sur le BadgeReceiver :

     Intent intent = new Intent(); intent.setAction("com.sonyericsson.home.action.UPDATE_BADGE"); intent.putExtra("com.sonyericsson.home.intent.extra.badge.ACTIVITY_NAME", "com.yourdomain.yourapp.MainActivity"); intent.putExtra("com.sonyericsson.home.intent.extra.badge.SHOW_MESSAGE", true); intent.putExtra("com.sonyericsson.home.intent.extra.badge.MESSAGE", "99"); intent.putExtra("com.sonyericsson.home.intent.extra.badge.PACKAGE_NAME", "com.yourdomain.yourapp"); sendBroadcast(intent); 
  3. Terminé. Une fois cette Intent diffusée, le lanceur devrait afficher un badge sur l’icône de l’application.

  4. Pour supprimer le badge, envoyez simplement une nouvelle diffusion, cette fois avec SHOW_MESSAGE sur false:

     intent.putExtra("com.sonyericsson.home.intent.extra.badge.SHOW_MESSAGE", false); 

J’ai exclu des détails sur la façon dont j’ai trouvé cela pour garder la réponse courte, mais tout est disponible dans le blog. Peut-être une lecture intéressante pour quelqu’un.

J’ai également posté une question séparée à ce sujet ici et j’appendai la réponse complète une fois que j’en ai le droit (il faut 10 points de réputation pour répondre à ma propre question dans les 8 heures).

La bibliothèque ShortcutBadger le rend possible et fonctionne avec LG, Sony, Samsung, HTC et autres lanceurs personnalisés.

Il a même un moyen d’afficher le nombre de badges dans le bureau des appareils Android purs.

Mettre à jour le nombre de badges dans l’icône de l’application est aussi simple que d’appeler:

 int badgeCount = 1; ShortcutBadger.setBadge(getApplicationContext(), badgeCount); 

Il comprend une application de démonstration qui vous permet de tester son comportement.

OU

vous pouvez également essayer alias-activité pour cela, mais vous devez créer différentes icons avec des valeurs de badge, cela fonctionnera très bien au cas où vous deviez basculer entre 2 icons d’application différentes (besoin de créer différents alias d’activité pour afficher icône différente, c’est-à-dire plus d’icons = plus d’alias d’activité).

Voici comment procéder pour:

  • Apex Launcher
  • Nova Launcer

Je pense qu’il y a aussi un moyen de le faire sur le lanceur LG, mais je n’ai pas encore trouvé comment.