有没有办法在Android的应用程序图标添加徽章?

在iPhone上,您可以为应用程序图标添加一个编号的徽章。 在黑莓手机上,我已经成功在程序中将图像绘制到应用程序的图标上。 我也想为Android做这个。 我不想使用通知栏,因为它不需要立即通知。 相反,我只希望用户能够通过查看应用程序图标来查看应用程序中有多less条新消息。

不幸的是,一旦程序被编译,Android不允许更改应用程序图标,因为它被封装在APK中。 没有办法以编程方式将其更改为“可绘制”。

您可以通过使用小部件而不是图标来实现您的目标。 小工具是高度可定制的,可以做你想做的。

有关iPhone图标通知和使用小部件之间的区别的简短讨论:

http://www.cnet.com/8301-19736_1-10278814-251.html

正如你会注意到,使用一个小部件或一个图标之间几乎没有区别,因为它们可以是相同的大小和看起来相同。

索尼的Xperia Home也可以做到这一点。 我已经在这里发表了博客,但重要的部分在下面。 索尼设备使用一个名为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。 可能是一个有趣的阅读某人。

我也在这里发布了一个关于这个问题的单独的问题,一旦我被允许(在8小时内需要10个声望来回答我自己的问题),我会添加完整的答案。

ShortcutBadger库使它成为可能,并与LG,索尼,三星,HTC和其他自定义启动器。

它甚至可以在Pure Android设备桌面上显示徽章计数。

更新应用程序图标中的徽章计数与调用一样简单:

 int badgeCount = 1; ShortcutBadger.setBadge(getApplicationContext(), badgeCount); 

它包含一个演示应用程序,允许您testing其行为。

要么

您也可以尝试使用活动别名,但是在此您需要创build具有徽章值的不同图标,如果需要在两个不同的应用程序图标之间切换(需要创build不同的活动别名来显示不同的图标,即更多的图标=更多的活动别名)。

以下是如何做到这一点:

  • 顶点发射器
  • 新星Launcer

我想在LG发射器上也有办法做到这一点,但还没有发现。