¿Hay alguna forma de agregar una insignia al ícono de una aplicación en Android?

En el iPhone, puede agregar una insignia numerada al ícono de la aplicación. En BlackBerry, pinté con éxito una imagen en el icono de la aplicación mientras estaba en el progtwig. Quiero hacer esto para Android también. No quiero usar la barra de notificaciones, ya que no es algo que deba ser notificado al instante. En cambio, solo quiero que el usuario pueda ver cuántos mensajes nuevos hay en la aplicación simplemente mirando el ícono de la aplicación.

Desafortunadamente, Android no permite cambiar el ícono de la aplicación porque está sellado en el APK una vez que se comstack el progtwig. No hay forma de cambiarlo programáticamente a un ‘drawable’.

Puede lograr su objective utilizando un widget en lugar de un ícono. Los widgets son altamente personalizables y pueden hacer lo que quieras.

Hay una breve discusión sobre la diferencia entre la notificación de icono de iPhone y el uso de widgets aquí:

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

Como notará, virtualmente no hay diferencia entre usar un widget o un ícono, ya que pueden ser del mismo tamaño y tener el mismo aspecto.

Esto también se puede hacer para Sony Xperia Home. He escrito sobre esto aquí , pero las partes importantes están debajo. Los dispositivos Sony usan una clase llamada BadgeReciever .

  1. Declare el permiso com.sonyericsson.home.permission.BROADCAST_BADGE en su archivo de manifiesto:

  2. Transmita una Intent al 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. Hecho. Una vez que se Intent este Intent el iniciador debe mostrar una insignia en el icono de su aplicación.

  4. Para eliminar la insignia nuevamente, simplemente envíe una nueva transmisión, esta vez con SHOW_MESSAGE establecido en falso:

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

He excluido detalles sobre cómo encontré esto para mantener la respuesta corta, pero está todo disponible en el blog. Puede ser una lectura interesante para alguien.

También publiqué una pregunta sobre SO separada aquí y agregaré la respuesta completa allí una vez que se me permita (necesito 10 reputación para responder mi propia pregunta en 8 horas).

La biblioteca ShortcutBadger lo hace posible y funciona con LG, Sony, Samsung, HTC y otros Lanzadores personalizados.

Incluso tiene una forma de mostrar el recuento de distintivos en el escritorio de los dispositivos Pure Android.

Actualizar el recuento de identificaciones en el icono de la aplicación es tan fácil como llamar:

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

Incluye una aplicación de demostración que le permite probar su comportamiento.

O

también puedes probar el alias de actividad para hacerlo, pero en esto necesitas crear diferentes íconos con valores de insignia, funcionará muy bien en caso de que necesites cambiar entre dos íconos de la aplicación (necesitas crear un alias de actividad diferente para mostrar icono diferente, es decir, más íconos = más alias de actividad).

He aquí cómo hacerlo por:

  • Apex Launcher
  • Nova Launcer

Creo que también hay una forma de hacerlo en el lanzador LG, pero todavía no hemos descubierto cómo.