-
-
Save defHLT/696d3ade55086e65b4246791cc489f9a to your computer and use it in GitHub Desktop.
Launcher icon notification for Samsung and Sony Xperia devices
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment