4***@qq.com
4***@qq.com
  • 发布:2018-03-19 16:14
  • 更新:2018-12-11 15:46
  • 阅读:6343

MUI实现程序快捷方式上面的提示数字

分类:MUI

从安卓转做mui也快一年,其中踩了无数的坑,其中样式最让人头疼。。。。以上属吐槽,进入正文。

这次是公司提出需求,想在应用的快捷方式上显示角标,然后去MUi官网看下文档,安卓目前只支持MIUI v5。。。。

然后网上各种找资料,找到一个觉得可行的方案:点我链接
只是看了https://github.com/leolin310148/ShortcutBadger的更新日志和源码发现小米的数字角标有点问题,然后修改如下:

ShortcutBadger.java里面的:

 static {  
    BADGERS.add(AdwHomeBadger.class);  
    BADGERS.add(ApexHomeBadger.class);  
    BADGERS.add(DefaultBadger.class);  
    BADGERS.add(NewHtcHomeBadger.class);  
    BADGERS.add(NovaHomeBadger.class);  
    BADGERS.add(SonyHomeBadger.class);  
    BADGERS.add(AsusHomeBadger.class);  
    BADGERS.add(HuaweiHomeBadger.class);  
    BADGERS.add(OPPOHomeBader.class);  
    BADGERS.add(SamsungHomeBadger.class);  
    BADGERS.add(ZukHomeBadger.class);  
    BADGERS.add(VivoHomeBadger.class);  
    BADGERS.add(ZTEHomeBadger.class);  
    BADGERS.add(XiaomiHomeBadger.class);  
    BADGERS.add(LGHomeBadger.class);  
    BADGERS.add(EverythingMeHomeBadger.class);  
}  
底部代码找到:  
 也是增加小米和LG。  
    if (sShortcutBadger == null) {  
        if (Build.MANUFACTURER.equalsIgnoreCase("ZUK"))  
            sShortcutBadger = new ZukHomeBadger();  
        else if (Build.MANUFACTURER.equalsIgnoreCase("OPPO"))  
            sShortcutBadger = new OPPOHomeBader();  
        else if (Build.MANUFACTURER.equalsIgnoreCase("VIVO"))  
            sShortcutBadger = new VivoHomeBadger();  
        else if (Build.MANUFACTURER.equalsIgnoreCase("ZTE"))  
            sShortcutBadger = new ZTEHomeBadger();  
        else if (Build.MANUFACTURER.equalsIgnoreCase("Xiaomi"))  
            sShortcutBadger = new XiaomiHomeBadger();  
        else if (Build.MANUFACTURER.equalsIgnoreCase("LG"))  
            sShortcutBadger = new LGHomeBadger();  
        else  
            sShortcutBadger = new DefaultBadger();  
    }  

如果不想自己去生成jar包,可以去下载:点我去下载

注意:经过2018/11/08用户寄过来的小米max3测试,源码上改动的代码会造成闪退,目前没有找到兼容小米max3的方案。因为github上那个开源项目如果不使用XiaomiHomeBadger类而使用DefaultBadger类,手上的测试机小米4c和max3是不能正常显示角标的。

然后把生成的jar包放到离线打包的lib文件夹里,mui中测试使用:

var ShortcutBadger = plus.android.importClass("me.leolin.shortcutbadger.ShortcutBadger");
var context = plus.android.runtimeMainActivity();
ShortcutBadger.applyCount(context, 99);

下一步准备接推送,看到官网有个推模块,等下去看下。

然后在使用中,自己手机小米max,MIUI的版本是9.5,发现默认把公司应用收到不重要通知里面,然后数字角标也没有显示,测试发现要去设置里的更多应用找到自己的应用,打开通知管理把是否设为重要改为:设为重要。角标就有显示了,这应该是跟小米MIUI 6上重新设计了桌面app图标的角标显示的基本规则有关,没去研究。

因为手机原因,暂时手里只有华为和小米,其他机型没有具体测试,不知道有没有其他问题。

不写了,搬砖去。

1 关注 分享
l***@163.com

要回复文章请先登录注册

高风

高风

这个是原生吗 可以加一下QQ请教一下嘛 917233641
2018-12-11 15:46
4***@qq.com

4***@qq.com (作者)

经过2018/11/08用户寄过来的小米max3测试,源码上改动的代码会造成闪退,目前没有找到兼容小米max3的方案。因为github上那个开源项目如果不使用XiaomiHomeBadger类而使用DefaultBadger类,手上的测试机小米4c和max3是不能正常显示角标的。
2018-11-08 16:42