BadgeNumberManager

Introduction: An Android library supports badge notification like iOS in Huawei, Xiaomi, OPPO and vivo launchers.
More: Author   ReportBugs   
Tags:
Add tag-

BadgeNumberManager支持国产主流手机品牌(华为、小米、OPPO、vivo)的桌面角标设置。

Demo 演示截图

用法

为了支持华为手机的桌面角标设置,我们需要先在AndroidManifest里配置以下权限:

<uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE"/>

然后,只需要调用以下方法就可以进行桌面角标的设置(小米手机除外,小米手机请参考 demo 里的处理方式):

BadgeNumberManager.from(context).setBadgeNumber(num)

填坑记录(2017.12.11)

  1. 经过测试,目前暂时不支持的机型:华为荣耀 6、OPPO A59、OPPO R9,OPPO R11、vivo X9i(截止至 2017.12.11)

  2. 一开始以为某些机型不支持可能是少了某些跟角标设置相关的权限,于是反编译微信、QQ、支付宝,从这些 App 中收集AndroidManifest里配置的可能跟角标设置相关的权限,并添加到 Demo 中来测试,后来发现还是不行

  3. 针对华为手机,在某些机型上,例如华为 mate9,在manifest里除了需要配置com.huawei.android.launcher.permission.CHANGE_BADGE权限之外,还需要配置android.permission.INTERNET权限才可以正常设置桌面角标(不过一般的 App 应该都会配置了android.permission.INTERNET权限)

  4. 关于 OPPO 手机,在一些较旧的机型上可以正常设置桌面角标,但在一些比较新的机型上(例如 OPPO R9,OPPO R11 等),只有在通知权限管理中,有“在桌面图标上显示角标”这个选项的 App 才可以正常设置角标。目前就只发现 QQ,微信,钉钉有这个权限,就连支付宝都没有这个权限。于是尝试着写了个 Demo,将 Demo 的包名改成了微信的包名,然后在通知权限管理中,就出现了“在桌面图标上显示图标”这个选项。所以,在新的机型上,OPPO 应该是根据包名来维护了一个白名单,只针对一些比较大型的 IM 类型的 App 开放桌面角标设置的权限。所以,这个问题暂时还没有解决方法

具体的实现探讨

关于桌面角标实现的探讨请查阅以下文章:

简书专栏:有关 Android 应用桌面角标(BadgeNumber)实现的探讨

知乎专栏:有关 Android 应用桌面角标(BadgeNumber)实现的探讨

掘金专栏:有关 Android 应用桌面角标(BadgeNumber)实现的探讨


BadgeNumberManager

An Android library supports badge notification like iOS in Huawei, Xiaomi, OPPO and vivo launchers.

Demo Screenshot

Usage

This library supports badge notification like iOS in Huawei, Xiaomi, OPPO and vivo launchers.

In order to support Huawei(华为) launcher,we need to declare a permission in AndroidManifest:

<uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE"/>

and then,just set the BadgeNumber like this:

BadgeNumberManager.from(context).setBadgeNumber(num)

More detail

For more detail,please check these articles:

简书专栏:有关 Android 应用桌面角标(BadgeNumber)实现的探讨

知乎专栏:有关 Android 应用桌面角标(BadgeNumber)实现的探讨

掘金专栏:有关 Android 应用桌面角标(BadgeNumber)实现的探讨

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools