源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2021-05-16 02:53 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Android为应用添加数字角标的简单实现
[b][/b]角标,英语是badge,也就是“徽章,像章,奖章; 象征,标记”的意思。 [b]效果图[/b] [img]http://files.jb51.net/file_images/article/201704/201741792528796.jpg?201731792549[/img] 可以看到图中的环信单聊这个app右上角的红色的圆圈,里面有6这个数字的,就是一种角标。 一般来说,应用的角标是用来标记有多少条提醒(Notification)没读(unread),一旦点击提示进应用阅读了,角标也会消失。 [b]一些必要的说明[/b] 角标原本是苹果的iOS中的东西,Android原生并不支持角标,因为Google的意思是让大家用Notification(提示栏)即可,不过无妨,厉害的Android第三方厂商可以通过在自定义的Launcher(启动器)中操作来实现添加角标。 [b]原理[/b] 添加角标的原理就是发送一个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的第三方库:[url=https://github.com/leolin310148/ShortcutBadger]https://github.com/leolin310148/ShortcutBadger[/url] github地址:[url=https://github.com/zhouxu88/AppBadge]https://github.com/zhouxu88/AppBadge[/url] 完整demo下载地址:[url=http://xiazai.jb51.net/201704/yuanma/AppBadge_jb51.rar]AppBadge_jb51.rar[/url] 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程素材网。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部