Android为应用添加数字角标的简单实现.pdf
文本预览下载声明
Android为为应应⽤⽤添添加加数数字字⾓⾓标标的的简简单单实实现现
⾓标,英语是badge,也就是“徽章,像章,奖章; 象征,标记”的意思。
果图
可以看到图中的环信单聊这个app右上⾓的红⾊的圆圈,⾥⾯有6这个数字的,就是⼀种⾓标。
⼀般来说,应⽤的⾓标是⽤来标记有多少条提醒 (Notification)没读 (unread),⼀旦点击提⽰进应⽤阅读了,⾓标也会消
失。
⼀些必要的说明
⾓标原本是苹果的iOS中的东西,Android原⽣并不⽀持⾓标,因为Google的意思是让⼤家⽤Notification (提⽰栏)即可,不
过⽆妨,厉害的Android第三⽅⼚商可以通过在⾃定义的Launcher (启动器)中操作来实现添加⾓标。
原理
添加⾓标的原理就是发送⼀个Broadcast (⼴播),在⼴播的Intent中指定需要被添加⾓标的应⽤的packageName (包
名),className (类名),count (⾓标数⽬)。当然了,不同⼚商的⼿机的⾓标操作的Intent的action是不⼀样的。
在Android anifest.xml中添加读取和写⼊⾓标的权限:
uses-permission android:name=com.sec .android.prov ider.badge.permission.REA D /
uses-permission android:name=com.sec .android.prov ider.badge.permission.WRITE /
设置⾓标和清除⾓标的⼯具类
public class BadgeUtils {
private static final String INTENT_ACTION = android.intent .action.BA DGE_COUNT_ UPDATE;
private static final String INTENT_ EXTRA_BA DGE_COUNT = badge_count;
private static final String INTENT_ EXTRA_ PACKAGENA E = badge_count_package_name;
private static final String INTENT_ EXTRA_ACTIV ITY_NA E = badge_count_class_name;
//设置⾓标
public static void set BadgeCount(Context context , int badgeCount) {
Intent intent = new Intent(INTENT_ACTION);
intent .put Extra(INTENT_ EXTRA_BA DGE_COUNT, badgeCount);
intent .put Extra(INTENT_ EXTRA_ PACKAGENA E, getComponent Name(context).get PackageName());
intent .put Extra(INTENT_ EXTRA_ACTIV ITY_NA E, getComponent Name(context).getClassName());
context .sendBroadcast(intent);
}
//清除⾓标
public static void removeBadge(Context context){
set BadgeCount(context ,0);
}
//获取Component Name
private static Component Name getComponent Name(Context context) {
return context .getApplicationContext().get Package anager()
.get LaunchIntent ForPacka
显示全部