在我的Android应用程序中,我想显示计数图标徽章。我正在使用enter link description here中的代码。当我测试它时,我总是得到这个错误。 unable the execute badge.shortcutbadger is currently not support the home launcher package"com.android.launcher"
。当我调试它时,我发现应用程序无法正确获取包名称。
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
ResolveInfo resolveInfo = getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
String currentHomePackage = resolveInfo.activityInfo.packageName;
//String currentHomePackage = "me.leolin.shortcutbadger.example.MainActivity";
TextView textViewHomePackage = (TextView) findViewById(R.id.textViewHomePackage);
textViewHomePackage.setText("launcher:" + currentHomePackage);
所以我把它手动,但我总是得到与正确的包名称相同的消息错误。
答案 0 :(得分:0)
您使用的库仅适用于默认的三星,HTC,LG,索尼和其他发射器,但不适用于官方Android启动器(com.android.launcher
)。
这可能是您在测试应用时遇到问题的原因。
答案 1 :(得分:0)
您可以使用以下代码设置启动器图标的徽章计数,但三星,HTC等设备支持的所有设备均不支持此功能...
public static void setBadge(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);
}
public 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;
}