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

gro*_*msy 48 icons android badge

在iPhone上,您可以为应用程序图标添加编号徽章.在BlackBerry上,我已经在程序中成功地将图像绘制到应用程序的图标上.我也想为Android做这件事.我不想使用通知栏,因为它不是需要立即通知的东西.相反,我只希望用户能够通过查看应用程序图标来查看应用程序中有多少新消息.

HXC*_*ine 33

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

您可以使用小部件而不是图标来实现目标.小部件是高度可定制的,可以做你想要的.

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

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

正如您将注意到的,使用小部件或图标几乎没有区别,因为它们可以是相同的大小并且看起来相同.

  • 您确定没有办法劫持启动器的主屏幕并将徽章位到图像上吗?我想要相同的功能,而应用程序小部件是针对不同问题的不同解决方案。任何人都可以扔掉我的小部件,但除非他们卸载该应用程序,否则该图标将永远保持不变。自从 Eclair/Froyo 时代提出这个问题以来,Gingerbread 中的操作系统级别有任何变化吗? (2认同)
  • 请注意这个答案的日期!Android在2010年非常不同 (2认同)

Mar*_*cus 16

这也适用于索尼的Xperia Home.我在这里写了博客,但重要的部分如下.索尼设备使用一个名为的类BadgeReciever.

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

  2. 广播IntentBadgeReceiver:

    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);
    
    Run Code Online (Sandbox Code Playgroud)
  3. 完成.一旦Intent在广播发射器应显示在您的应用程序图标徽章.

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

    intent.putExtra("com.sonyericsson.home.intent.extra.badge.SHOW_MESSAGE", false);
    
    Run Code Online (Sandbox Code Playgroud)

我已经排除了有关我如何找到这个以保持答案简短的细节,但这些都在博客中提供.对某人来说,这可能是一个有趣的读物.

我也张贴了关于这一个单独的SO问题,在这里,将有添加完整的答案,一旦我允许(需要10声誉回答8个小时之内我自己的问题).


Gag*_*eep 9

ShortcutBadger库可以与LG,索尼,三星,HTC和其他自定义启动器配合使用.

它甚至可以在Pure Android设备桌面上显示Badge Count.

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

int badgeCount = 1;
ShortcutBadger.setBadge(getApplicationContext(), badgeCount);
Run Code Online (Sandbox Code Playgroud)

它包括一个演示应用程序,允许您测试其行为.

要么

您也可以尝试使用activity-alias这样做,但是在此你需要创建带徽章值的不同图标,它会很好用 - 你需要在2个不同的App图标之间切换(需要创建不同的活动别名来显示不同的图标,即更多图标=更多活动别名).