Android Badge 角标 总结

Android Badge 角标 总结

  • 众所周知,App桌面角标,原来仅在iOS上面有,安卓原生是不支持的,如果需要为App添加角标,需要使用到各大厂商自己的实现
  • 大多数的厂商都是通过广播形式实现App角标,即App内部通过发送广播,更新桌面角标。
  • 发送广播需要初始化Intent,然后往里面put参数,但各个厂商的put的参数不一定一样,这就需要开发者在根据各个厂商做适配。
  • 但万能的Google帮我搜索到了第三方库BadgeUtil,方便角标操作。原理很简单,匹配当前Launcher名称,找到相对应的Badge实现类,不同的Badge实现会适配各自厂商的Launcher。
  • 这库很方便,省了不少查文档的时间。

Badge与推送

角标有一个较常用的场景,就是在接收到推送时,在原有数字上+1

  1. 这里只需要App维护着一个当前Badge的数字,因为这个数字通过广播发送给系统后,但不能从系统获取,所以要做+1操作,必须自己维护着当前数值,收到推送后,手动发送广播,设置当前数值。
  2. 上面的一点,发现了某种情况下,在小米手机上不适用

    1) 首先是小米手机如果要更新角标,就必须在通知栏发送一个通知。 
    这里写图片描述 
    2) App不处于最前端的情况下,才能更新角标(例如:当前处于App的其中一个Activity在显示状态,不能更新角标的) 
    这里写图片描述 
    3) 若是用极光推送(我只用过极光), 而且使用发送通知 
    jpush 
    这个时候极光会自动在通知发送一个通知,如果App不在最前面,角标会自动+1,这就是 
    这时候就是等于小米可以跟极光已经配合做好角标了,不需要我们做什么,如果这时候我们再手动更新角标,则用户会收到两条通知,所以在发送之前需要判断一下是否小米手机。

    if (!isXiaoMi(context)) {
            ShortcutBadger.applyCount(context, badgeCount);
    }
    
    public static boolean isXiaoMi(Context context) {
        if (TextUtils.isEmpty(mCurrentLauncherName)) {
            mCurrentLauncherName = getCurrentLaunchname(context);
        }
        boolean isConain = false;
        if (mCurrentLauncherName.contains("Xiaomi")) {
            return true;
        }
    
        if (mCurrentLauncherName.contains("miui")) {
            return true;
        }
        return false;
    }
    
    public static String getCurrentLaunchname(Context context) {
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_HOME);
        ResolveInfo resolveInfo = context.getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
    
        if (resolveInfo == null || resolveInfo.activityInfo.name.toLowerCase().contains("resolver"))
            return "";
    
        return resolveInfo.activityInfo.packageName;
    }
       
       
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

总结一下:

就是小米手机需要在更新角标前做一些特别判断,其它的就直接用第三方库更新就可以了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值