我知道这里有几个Q询问是否有可能在Android应用程序中添加徽章并且他们最终都没有答案......
但不知何故,Android seems to do something which at least look like a badge的最新Facebook测试版即使在技术上并非如此。
在该帖子中,其中一位评论者说它与TouchWiz有某种关联。 also here they提到它是“S3 TouchWiz Jelly Bean Addon”的一个特色。
我仍然希望了解如何做到这一点以及是否有一些我可以在我自己的应用程序中使用的API(当在适当的环境中运行时 - 即FB演示此行为的同一设备)?
答案 0 :(得分:28)
您好,您可以简单地使用此库。
支持:索尼,三星,LG,HTC,小米,华硕,ADW,APEX,NOVA,华为,ZUK,OPPO
添加:
int badgeCount = 1;
ShortcutBadger.applyCount(context, badgeCount);
删除:
ShortcutBadger.applyCount(context, 0);
答案 1 :(得分:23)
我已经弄清楚如何为索尼设备做到这一点。
我在博客上写了here。我还发布了关于here的单独SO问题。
Sony设备使用名为BadgeReciever
的类。
在清单文件中声明com.sonyericsson.home.permission.BROADCAST_BADGE
权限:
将Intent
广播到BadgeReceiver
:
Intent intent = new Intent();
intent.setAction("com.sonyericsson.home.action.UPDATE_BADGE");
intent.putExtra("com.sonyericsson.home.intent.extra.badge.ACTIVITY_NAME", "com.yourdomain.yourapp.MainActivity");
intent.putExtra("com.sonyericsson.home.intent.extra.badge.SHOW_MESSAGE", true);
intent.putExtra("com.sonyericsson.home.intent.extra.badge.MESSAGE", "99");
intent.putExtra("com.sonyericsson.home.intent.extra.badge.PACKAGE_NAME", "com.yourdomain.yourapp");
sendBroadcast(intent);
完成。广播此Intent
后,启动器应在您的应用程序图标上显示徽章。
要再次移除徽章,只需发送新广播,这次将SHOW_MESSAGE
设置为false:
intent.putExtra("com.sonyericsson.home.intent.extra.badge.SHOW_MESSAGE", false);
我已经排除了有关我如何找到这个以保持答案简短的细节,但这些都可以在博客中找到。对某人来说,这可能是一本有趣的读物。
答案 2 :(得分:12)
没有一种标准的方法来实现这一目标;索尼或三星等许多制造商已经在他们自己的Android定制中实现了它。
例如在三星中,您必须使用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);
Sony设备使用"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()
),而不是硬编码以防万一您将来进行重构。
答案 3 :(得分:10)
但不知何故,Android的最新Facebook测试版就是这样......
不符合the forum thread that contains the screenshot that you linked to。引用vakama94:
嗯,这实际上是TouchWiz,而不仅仅是应用程序。我有一个运行JellyBean 4.1.2的Galaxy S II,它与其他一些应用程序相同但
三星是否有公共API允许应用程序发布数字作为徽章,我不能说。这可能是他们与少数公司私下做的事情。
欢迎您提供在Android主屏幕上查看这些徽章的证据,例如Nexus系列设备之一。
答案 4 :(得分:0)
我回答这个假设一些颤振开发者可以搜索这个...... 在 Flutter 中,您可以通过使用 Flutter app badger 图书馆。
就这么简单
FlutterAppBadger.updateBadgeCount(1); // show
FlutterAppBadger.removeBadge(); // hide