java - quitar - ¿Cómo agrega Facebook los números de la insignia en el ícono de la aplicación en Android?
quitar globo de notificaciones android (4)
Pero de alguna manera, la última versión beta de Facebook para Android hace eso ...
No según el hilo del foro que contiene la captura de pantalla a la que se ha vinculado . Citando a vakama94:
Bueno, eso es realmente TouchWiz y no solo la aplicación. Tengo un Galaxy S II ejecutando JellyBean 4.1.2 y hace lo mismo, pero con algunas otras aplicaciones
No puedo decir si Samsung tiene una API pública para permitir que las aplicaciones publiquen números para usar como distintivos. Esto podría ser algo que hicieron en privado con algunas empresas.
Le invitamos a proporcionar evidencia de ver estas insignias en una pantalla de inicio de Android, como uno de los dispositivos de la serie Nexus.
Sé que hay varias preguntas aquí que preguntan si es posible agregar insignias a una aplicación de Android y todas terminan con una respuesta NO ...
Pero de alguna manera, la última versión beta de Facebook para Android parece hacer algo que al menos parece una insignia, incluso si técnicamente no es exactamente eso.
En esa publicación, uno de los comentaristas dice que de alguna manera está relacionado con TouchWiz. Y también aquí lo mencionan como una característica del "Complemento S3 TouchWiz Jelly Bean".
Todavía agradecería información sobre cómo se puede hacer esto y si hay alguna API para esto que pueda usar en mi propia aplicación (cuando se ejecuta en un entorno apropiado, es decir, el mismo dispositivo donde FB demuestra este comportamiento).
He descubierto cómo se hace esto para los dispositivos de Sony.
He escrito sobre esto here . También publiqué una pregunta sobre SO por separado here .
Los dispositivos Sony usan una clase llamada BadgeReciever
.
Declare el permiso
com.sonyericsson.home.permission.BROADCAST_BADGE
en su archivo de manifiesto:Transmita una
Intent
alBadgeReceiver
: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);
Hecho. Una vez que se
Intent
esteIntent
el iniciador debe mostrar una insignia en el icono de su aplicación.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.
Hola, puedes usar esta lib simplemente.
Soporte: Sony, Samsung, LG, HTC, Xiaomi, ASUS, ADW, APEX, NOVA, Huawei, ZUK, OPPO
Agregar:
int badgeCount = 1;
ShortcutBadger.applyCount(context, badgeCount);
Retirar :
ShortcutBadger.applyCount(context, 0);
No hay una forma estándar de lograr esto; Muchos fabricantes como Sony o Samsung lo han implementado en su propia personalización de Android.
Por ejemplo, en Samsung, debe transmitir un intento con la acción BADGE_COUNT_UPDATE, deje que MainActivity
sea su clase de actividad principal y count
el número que desea mostrar en el icono de su aplicación, tenga en cuenta que 0 ocultará la insignia:
Intent intent = new Intent("android.intent.action.BADGE_COUNT_UPDATE");
intent.putExtra("badge_count", count);
intent.putExtra("badge_count_package_name", context.getPackageName());
intent.putExtra("badge_count_class_name", MainActivity.class.getName());
context.sendBroadcast(intent);
Los dispositivos de Sony utilizan la acción "com.sonyericsson.home.action.UPDATE_BADGE"
con sus extras personalizados como @Marcus Responsed, por lo que debe agregar el permiso "com.sonyericsson.home.permission.BROADCAST_BADGE"
al manifiesto de su aplicación y:
Intent intent = new Intent("com.sonyericsson.home.action.UPDATE_BADGE");
intent.putExtra("com.sonyericsson.home.intent.extra.badge.ACTIVITY_NAME", MainActivity.class.getName());
intent.putExtra("com.sonyericsson.home.intent.extra.badge.SHOW_MESSAGE", true);
intent.putExtra("com.sonyericsson.home.intent.extra.badge.MESSAGE", String.valueOf(count));
intent.putExtra("com.sonyericsson.home.intent.extra.badge.PACKAGE_NAME", context.getPackageName());
context.sendBroadcast(intent);
Nota: es deseable consultar los datos de su aplicación ( context.getPackageName()
, MainActivity.class.getName()
) en lugar de hardcode en caso de que realice alguna refactorización en el futuro.