Avec le Sony Xperia Home, certaines applications peuvent afficher une bulle ou un badge de nombre sur l’icône de l’application. Facebook et Facebook Messenger le font, ainsi que l'application de messagerie intégrée.
Cela a été résolu pour le lanceur de Samsung }, mais je n'ai trouvé aucun document expliquant comment le faire pour le lanceur de Sony.
Comment ceci peut être fait?
J'utilise cette classe pour les appareils Samsung, Sony et HTC (également disponible https://Gist.github.com/Tadas44/cdae2f5995f21bf1c27f ). N'oubliez pas d'ajouter <uses-permission Android:name="com.sonyericsson.home.permission.BROADCAST_BADGE" />
à AndroidManifest.xml
public class BadgeUtils {
public static void setBadge(Context context, int count) {
setBadgeSamsung(context, count);
setBadgeSony(context, count);
}
public static void clearBadge(Context context) {
setBadgeSamsung(context, 0);
clearBadgeSony(context);
}
private static void setBadgeSamsung(Context context, int count) {
String launcherClassName = getLauncherClassName(context);
if (launcherClassName == null) {
return;
}
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", launcherClassName);
context.sendBroadcast(intent);
}
private static void setBadgeSony(Context context, int count) {
String launcherClassName = getLauncherClassName(context);
if (launcherClassName == null) {
return;
}
Intent intent = new Intent();
intent.setAction("com.sonyericsson.home.action.UPDATE_BADGE");
intent.putExtra("com.sonyericsson.home.intent.extra.badge.ACTIVITY_NAME", launcherClassName);
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);
}
private static void clearBadgeSony(Context context) {
String launcherClassName = getLauncherClassName(context);
if (launcherClassName == null) {
return;
}
Intent intent = new Intent();
intent.setAction("com.sonyericsson.home.action.UPDATE_BADGE");
intent.putExtra("com.sonyericsson.home.intent.extra.badge.ACTIVITY_NAME", launcherClassName);
intent.putExtra("com.sonyericsson.home.intent.extra.badge.SHOW_MESSAGE", false);
intent.putExtra("com.sonyericsson.home.intent.extra.badge.MESSAGE", String.valueOf(0));
intent.putExtra("com.sonyericsson.home.intent.extra.badge.PACKAGE_NAME", context.getPackageName());
context.sendBroadcast(intent);
}
private static String getLauncherClassName(Context context) {
PackageManager pm = context.getPackageManager();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> resolveInfos = pm.queryIntentActivities(intent, 0);
for (ResolveInfo resolveInfo : resolveInfos) {
String pkgName = resolveInfo.activityInfo.applicationInfo.packageName;
if (pkgName.equalsIgnoreCase(context.getPackageName())) {
String className = resolveInfo.activityInfo.name;
return className;
}
}
return null;
}
}
Eh bien, c'est assez difficile à faire. Le seul moyen que j'ai trouvé jusqu'à présent est de créer une widget
qui gérera à la fois l'icône de l'application et le badge.
Je vous suggère fortement de visiter cette page où vous apprendrez comment y parvenir: Android: Est-il possible de mettre à jour un ImageView/ImageButton avec un numéro indiquant le nombre de nouveaux messages?
Je me rends compte que cette question est assez ancienne, mais pour des raisons historiques, l’API permettant aux applications tierces de dialoguer avec l’API Xperia Home pour cette fonctionnalité particulière a été rendue publique l’année dernière:
L'API de badge Xperia Home est maintenant accessible au public
Avec un exemple de code ici:
Il existe également une bibliothèque tierce qui prend en charge la plupart des principaux fournisseurs de téléphones, y compris l'API Xperia Home: