android 徽章,在android中的app图标上添加通知徽章

我将此类用于三星和索尼设备(也可用于

https://gist.github.com/Tadas44/cdae2f5995f21bf1c27f).不要忘记添加< 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 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;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值