我最近想实现在图标上展示新消息的数目提醒,类似ios的badge。一开始使用的是增删桌面快捷方式的方法,我发现该方法除了未能适配主流手机外,还存在2个缺点:
1.有的手机会在增加和删除快捷方式时弹出Toast;
2.我用canvas和paint画出了数字在右上角显示的图标,因为canvas的大小和普通的图标一样大,所以只看应用的图片的话,就显得小了。
        以上这两个缺点我都不想要,克服的话,经百度大家都说要修改Launcher,但是我又没有这个本事就放弃了。
        后来在stackoverflow上看到大家对这个问题的讨论,进而在github上发现了ShortCutBadger这个项目https://github.com/leolin310148/ShortcutBadger/,经过测试很给力!!它直接把应用列表中的icon改了,而且大小和谐,我在三星手机和华硕平板上都测试通过了。但是问题是,这里并未给出华为手机的相关处理方法,我觉得华为用户不可小觑,自己用的就是华为机,所以我就找到了这篇http://stackoverflow.com/questions/20216806/how-to-add-a-notification-badge-count-to-application-icon-on-sony-xperia-devices,作者讲述了他在sony手机实现badge的过程。但是我一没翻墙,二没root,实在是想不出办法了,所以想问问各位高手,在此先谢过了!
         既然路过就留下点什么呗~~~~~~

解决方案 »

  1.   

    http://developer.huawei.com/wiki/index.php?title=%E5%8D%8E%E4%B8%BA%E6%A1%8C%E9%9D%A2%E8%A7%92%E6%A0%87%E5%BC%80%E5%8F%91%E6%8C%87%E5%AF%BC%E4%B9%A6
      

  2.   

    接着上回:
    文档中说申请华为证书之前要签署《API 授权证书使用协议》,询问客服说“角标属于受限开放能力,仅面向即时通信领域前五的app开放”。瞬时我就泪崩了~~~~~
      

  3.   

    http://www.tuicool.com/articles/am63ue  ,使用badgeView
      

  4.   

    我也和你一样要实现这个功能 也是找到了 github上的那个项目。现在到处找华为手机的解决办法,你在第九楼说的意思是一般应用华为不开放这个么 现在解决了没有
      

  5.   


    现在还是没有解决,暂时用通知栏提醒了
    看到华为开发者联盟有提供这样的接口调用 但是需要申请开发者账号 上周申请的时候官网在维护  明天上班再去看看行不行说的是实名认证?这个批准是很快的,我进行到签署《API 授权证书使用协议》这一步的时候,客服说“角标属于受限开放能力,仅面向即时通信领域前五的app开放”
      

  6.   


    现在还是没有解决,暂时用通知栏提醒了
    看到华为开发者联盟有提供这样的接口调用 但是需要申请开发者账号 上周申请的时候官网在维护  明天上班再去看看行不行说的是实名认证?这个批准是很快的,我进行到签署《API 授权证书使用协议》这一步的时候,客服说“角标属于受限开放能力,仅面向即时通信领域前五的app开放”

    好吧 这个实在是太坑了
      

  7.   

    楼主,我也找到了github上的那个程序,但是还是很多机型不支持,你做联想的了吗。华为的有别的办法解决吗?
      

  8.   

    HI,Melody_ssdut!能麻烦你将研究出来的角标源码分享一下吗,最近在搞这一块,遇到各种问题,而且github上的源码我再AS上各种跑不起来  删减了配置可以跑了  但功能也都无效了,麻烦分享到CSDN网盘,给个链接!谢谢!
      

  9.   

    我看了很多篇文章,对其中的每个都测试了,就几个是可行的,我只有小米手机,测试起来第一次是可以准确提醒,我在界面里面添加了一个button,点击button后为已读消息,没点击则还是未读状态,但是我未读,返回桌面的时候,那个未读图标消息数已经没了,不知道用什么方法解决
      

  10.   

    华为的确开发了桌面角标的功能,不过我按照对方发过来的文档接入后,并不能显示角标,有遇到的没,我的代码如下:
    1.声明权限,如下:
    <uses-permission android:name=" com.huawei.android.launcher.permission. CHANGE_BADGE"/>2.在需要进行角标显示地方,采用如下方法传递数据给华为桌面应用Bundle extra =new Bundle();
    extra.putString("package",  "xxxxxx");
    extra.putString("class", "yyyyyyy");
    extra.putInt("badgenumber", i);
    context.getContentResolver().call(Uri.parse("content://com.huawei.android.launcher.settings/badge/"), "change_badge", null, extra);关键参数说明【红色部分为填充参数】
    package:应用包名
    class:桌面图标对应的应用入口Activity类
    badgenumber:角标数字
      

  11.   

    问题解决,extra.putString("class", "yyyyyyy");,这里的class必须是launcherclass
      

  12.   

    关于应用图标显示未读消息数量,找了一些资料:https://community.jiguang.cn/t/topic/13924,但是还是存在许多问题,没能符合项目需求,我只有小米5s做,用的是ShortcutBadger,通过jpush自定义消息的方式,在代码中设置未读消息数量.项目需求是:需要获取未读消息的总数进行设置, 极光不提供获取未读消息数量的方法,因为无法做到适配所有的机型 ,这部分需要自己完成,请教1:如何控制未读消息数量,后台传递实现不了,要做也只能在app内实现:请教2:点击了一个通知,未读消息数量,自动清0了,这样会影响自己设置未读消息数量,另外, 应用打开的情况设置未读消息没有效果.
      

  13.   


    launcherclass 是多少呀?
      

  14.   


    launcherclass 是多少呀?
    就是你应用中最开始启动的那个Activity,