Facebook如何在Android的应用图标上添加徽章号码?
我知道这里有几个Q,问是否可以添加徽章到Android应用程序,他们都没有答案…
但不知何故,Android的最新Facebooktesting版似乎做了一些东西,至less看起来像一个徽章,即使它不是技术上的确如此。
在这篇文章中,其中一位评论者说,它与TouchWiz有某种关系。 而且在这里他们也提到它是“S3 TouchWiz果冻豆插件”的一个特色。
我仍然会很感激这样的信息,如果有一些API可以用在我自己的应用程序中(当在一个合适的环境中运行时 – 也就是FB显示这种行为的同一个设备)?
我已经想出了这是如何做索尼设备。
我在这里博客了。 我也在这里发布了一个单独的SO问题。
索尼设备使用一个名为BadgeReciever
的类。
-
声明清单文件中的
com.sonyericsson.home.permission.BROADCAST_BADGE
权限: -
向
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);
-
完成。 一旦这个
Intent
被广播发射器应该在你的应用程序图标上显示一个徽章。 -
要再次移除徽章,只需发送一个新的广播,这次
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系列设备之一)上看到这些徽章的证据。