Android为应用添加数字角标的简单实现

发布时间 - 2026-01-11 00:40:57    点击率:

角标,英语是badge,也就是“徽章,像章,奖章; 象征,标记”的意思。

效果图


可以看到图中的环信单聊这个app右上角的红色的圆圈,里面有6这个数字的,就是一种角标。

一般来说,应用的角标是用来标记有多少条提醒(Notification)没读(unread),一旦点击提示进应用阅读了,角标也会消失。

一些必要的说明

角标原本是苹果的iOS中的东西,Android原生并不支持角标,因为Google的意思是让大家用Notification(提示栏)即可,不过无妨,厉害的Android第三方厂商可以通过在自定义的Launcher(启动器)中操作来实现添加角标。

原理

添加角标的原理就是发送一个Broadcast(广播),在广播的Intent中指定需要被添加角标的应用的packageName(包名),className(类名),count(角标数目)。当然了,不同厂商的手机的角标操作的Intent的action是不一样的。

在AndroidManifest.xml中添加读取和写入角标的权限:

<uses-permission android:name="com.sec.android.provider.badge.permission.READ" />
<uses-permission android:name="com.sec.android.provider.badge.permission.WRITE" />

设置角标和清除角标的工具类

public class BadgeUtils {
  private static final String INTENT_ACTION = "android.intent.action.BADGE_COUNT_UPDATE";
  private static final String INTENT_EXTRA_BADGE_COUNT = "badge_count";
  private static final String INTENT_EXTRA_PACKAGENAME = "badge_count_package_name";
  private static final String INTENT_EXTRA_ACTIVITY_NAME = "badge_count_class_name";

  //设置角标
  public static void setBadgeCount(Context context, int badgeCount) {
    Intent intent = new Intent(INTENT_ACTION);
    intent.putExtra(INTENT_EXTRA_BADGE_COUNT, badgeCount);
    intent.putExtra(INTENT_EXTRA_PACKAGENAME, getComponentName(context).getPackageName());
    intent.putExtra(INTENT_EXTRA_ACTIVITY_NAME, getComponentName(context).getClassName());
    context.sendBroadcast(intent);
  }

  //清除角标
  public static void removeBadge(Context context){
    setBadgeCount(context,0);
  }

  //获取ComponentName
  private static ComponentName getComponentName(Context context) {
    return context.getApplicationContext().getPackageManager()
        .getLaunchIntentForPackage(context.getApplicationContext().getPackageName())
        .getComponent();
  }
}

注意:

因为不同手机厂商的action不同,所以可能导致某些手机不能使用,在此推荐一个github的第三方库:https://github.com/leolin310148/ShortcutBadger

github地址:https://github.com/zhouxu88/AppBadge

完整demo下载地址:AppBadge_jb51.rar

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# android  # 应用角标  # android角标数字  # 添加应用角标  # Android 实现桌面未读角标  # Android实现购物车及其他功能的角标  # 第三方  # 启动器  # 也会  # 在此  # 下载地址  # 有多少  # 可以通过  # 可以看到  # 自定义  # 英语  # 本是  # 来实现  # 图中  # 大家多多  # 大家用  # 是用来  # 当然了  # lt  # Broadcast  # Intent 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  使用spring连接及操作mongodb3.0实例  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理  Python面向对象测试方法_mock解析【教程】  如何快速生成ASP一键建站模板并优化安全性?  网站制作报价单模板图片,小松挖机官方网站报价?  如何用JavaScript实现文本编辑器_光标和选区怎么处理  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  香港服务器部署网站为何提示未备案?  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  网站图片在线制作软件,怎么在图片上做链接?  详解Android图表 MPAndroidChart折线图  bing浏览器学术搜索入口_bing学术文献检索地址  高端建站三要素:定制模板、企业官网与响应式设计优化  JS实现鼠标移上去显示图片或微信二维码  佛山网站制作系统,佛山企业变更地址网上办理步骤?  如何快速使用云服务器搭建个人网站?  实例解析angularjs的filter过滤器  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  微信小程序 配置文件详细介绍  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  js代码实现下拉菜单【推荐】  教你用AI将一段旋律扩展成一首完整的曲子  Python3.6正式版新特性预览  如何在万网开始建站?分步指南解析  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  Python文件流缓冲机制_IO性能解析【教程】  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  手机网站制作与建设方案,手机网站如何建设?  如何在Windows 2008云服务器安全搭建网站?  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  智能起名网站制作软件有哪些,制作logo的软件?  香港服务器如何优化才能显著提升网站加载速度?  Python自动化办公教程_ExcelWordPDF批量处理案例  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  JavaScript Ajax实现异步通信  Python并发异常传播_错误处理解析【教程】  java获取注册ip实例  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  如何用低价快速搭建高质量网站?  php 三元运算符实例详细介绍  WEB开发之注册页面验证码倒计时代码的实现  微信小程序 闭包写法详细介绍