-
-
Save dhavaln/225c5d657b9896ffce5209f34fc26874 to your computer and use it in GitHub Desktop.
Launcher icon notification for Samsung and Sony Xperia devices
This file contains hidden or 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