Badge概述
所谓Badge,原本是IOS上的一个效果,指的是当手机接收到推送消息后,会在手机桌⾯面对应的App图标的右上角显示一个未读消息数的提⽰。
而在Android系统中,手机桌面的管理是在系统应用Launcher上实现的,然而在原生的Android系统中,Launcher是不提供改功能效果的。但是,由于Android的AOSP(Android开放源码项目)代码能够被各大ROM厂商修改,所以很多被修改的ROM都可以支持这种Badge效果。
基本原理
都是监听App发出的广播,然后根据广播内容进行Launcher层面的快捷方式的修改。
难点
由于没有Android原生系统的支持,所以ROM厂商的实现方式很不统一,基本都是自己做自己的。因此,关键是要找到这些Launcher修改的广播(厂家提供的私有API)。
不同厂商API
三星
String launcherClassName = getLauncherClassName(context); if (launcherClassName == null) { return; } Intent intent = new Intent("android.intent.action.BADGE_COUNT_UPDATE"); intent.putExtra("badge_count", count); intent.putExtra("badge_count_package_name", context.getPackageName()); intent.putExtra("badge_count_class_name", launcherClassName); context.sendBroadcast(intent);
华为
String launcherClassName = getLauncherClassName(context); if (launcherClassName != null) { Bundle extra = new Bundle(); extra.putString("package", ct.getPackageName()); extra.putString(