有没有办法在Android的应用程序图标添加徽章?
在iPhone上,您可以为应用程序图标添加一个编号的徽章。 在黑莓手机上,我已经成功在程序中将图像绘制到应用程序的图标上。 我也想为Android做这个。 我不想使用通知栏,因为它不需要立即通知。 相反,我只希望用户能够通过查看应用程序图标来查看应用程序中有多less条新消息。
不幸的是,一旦程序被编译,Android不允许更改应用程序图标,因为它被封装在APK中。 没有办法以编程方式将其更改为“可绘制”。
您可以通过使用小部件而不是图标来实现您的目标。 小工具是高度可定制的,可以做你想做的。
有关iPhone图标通知和使用小部件之间的区别的简短讨论:
http://www.cnet.com/8301-19736_1-10278814-251.html
正如你会注意到,使用一个小部件或一个图标之间几乎没有区别,因为它们可以是相同的大小和看起来相同。
索尼的Xperia Home也可以做到这一点。 我已经在这里发表了博客,但重要的部分在下面。 索尼设备使用一个名为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。 可能是一个有趣的阅读某人。
我也在这里发布了一个关于这个问题的单独的问题,一旦我被允许(在8小时内需要10个声望来回答我自己的问题),我会添加完整的答案。
ShortcutBadger库使它成为可能,并与LG,索尼,三星,HTC和其他自定义启动器。
它甚至可以在Pure Android设备桌面上显示徽章计数。
更新应用程序图标中的徽章计数与调用一样简单:
int badgeCount = 1; ShortcutBadger.setBadge(getApplicationContext(), badgeCount);
它包含一个演示应用程序,允许您testing其行为。
要么
您也可以尝试使用活动别名,但是在此您需要创build具有徽章值的不同图标,如果需要在两个不同的应用程序图标之间切换(需要创build不同的活动别名来显示不同的图标,即更多的图标=更多的活动别名)。
以下是如何做到这一点:
- 顶点发射器
- 新星Launcer
我想在LG发射器上也有办法做到这一点,但还没有发现。