Facebook如何在Android的应用图标上添加徽章号码?

我知道这里有几个Q,问是否可以添加徽章到Android应用程序,他们都没有答案…

但不知何故,Android的最新Facebooktesting版似乎做了一些东西,至less看起来像一个徽章,即使它不是技术上的确如此。

在这篇文章中,其中一位评论者说,它与TouchWiz有某种关系。 而且在这里他们也提到它是“S3 TouchWiz果冻豆插件”的一个特色。

我仍然会很感激这样的信息,如果有一些API可以用在我自己的应用程序中(当在一个合适的环境中运行时 – 也就是FB显示这种行为的同一个设备)?

我已经想出了这是如何做索尼设备。

我在这里博客了。 我也在这里发布了一个单独的SO问题。


索尼设备使用一个名为BadgeReciever的类。

  1. 声明清单文件中的com.sonyericsson.home.permission.BROADCAST_BADGE权限:

  2. BadgeReceiver广播一个Intent

     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); 
  3. 完成。 一旦这个Intent被广播发射器应该在你的应用程序图标上显示一个徽章。

  4. 要再次移除徽章,只需发送一个新的广播,这次SHOW_MESSAGE设置为false:

     intent.putExtra("com.sonyericsson.home.intent.extra.badge.SHOW_MESSAGE", false); 

我已经排除了我如何find这个答案的细节,但这一切都可以在博客中find。 可能是一个有趣的阅读某人。

嗨,你可以简单地使用这个库。

支持:索尼,三星,LG,HTC,小米,华硕,ADW,APEX,NOVA,华为,ZUK,OPPO

ShortcutBadger

在这里输入图像描述

地址:

 int badgeCount = 1; ShortcutBadger.applyCount(context, badgeCount); 

去掉 :

 ShortcutBadger.applyCount(context, 0); 

没有一个标准的方法来实现这一点; 索尼或三星等许多厂商已经在自己的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); 

索尼设备使用"com.sonyericsson.home.action.UPDATE_BADGE"行动与他们的自定义额外作为@马库斯答案,所以你必须添加"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() ),而不是硬编码它,以防万一你在将来做一些重构。

但不知何故,Android的最新的Facebooktesting版本只是…

不是根据包含您链接到的屏幕截图的论坛主题 。 引用vakama94:

那么,这实际上是TouchWiz,而不仅仅是应用程序。 我有一个运行JellyBean 4.1.2的Galaxy S II,它和其他一些应用程序一样

不pipe三星是否有公开的API来允许应用程序发布数字来作为徽章,我不能说。 这可能是他们在一些公司私下做的事情。

欢迎您提供在Android主屏幕(例如Nexus系列设备之一)上看到这些徽章的证据。