没有一种标准方法可以实现此功能。像 Sony 或 Samsung 这样的许多制造商已经在其自己的 Android 定制中实现了此功能。
例如,在 Samsung 中,您必须使用 BADGE_COUNT_UPDATE 操作广播一个意图,让 MainActivity
成为您的主要活动类,并让 count
成为您想要在应用程序图标中显示的数字。请注意,0 将隐藏徽章:
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);
索尼设备使用"com.sonyericsson.home.action.UPDATE_BADGE"
动作和他们的自定义扩展,如@Marcus所回答的那样,因此您必须在您的应用程序清单中添加"com.sonyericsson.home.permission.BROADCAST_BADGE"
权限:
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);
注意:为了防止未来进行一些重构,最好查询您的应用程序数据(context.getPackageName()
, MainActivity.class.getName()
)而不是硬编码它。