Android 应用桌面角标显示
前言
  ### 什么是角标?
1
​ 首先如图1所示,角标就是当有消息来的时候,桌面上应用的图标会用数字显示新消息的条数。

​ 应用角标先出现在ios系统上,apple用于消息通知。实际上,Android原生系统并不支持桌面应用角标的显示,各个Android厂商在定制系统的时候,模仿ios系统,实现了这个功能,角标实现主要是厂商定制Launcher(启动器)来实现,为应用预留了接口。具体地,在应用开发中实现方法主要分为两种,通过getContentResolver或是sendBroadcast方式传递消息数目来实现。不同的厂商需要的权限和传递参数不同,所以需要根据不同的厂商单独实现,此外,并不是每个厂商都将角标功能对外开放了,下面主要介绍常见厂商角标功能的实现方法。

华为

跟华为开发者联盟客服联系确认,华为已经将角标的权限对外开放,不用再去申请证书什么的麻烦操作。亲测华为角标支持EMUI 3.1及以上。具体实现如下:

a) 声明权限,如下:


1
b) 在需要进行角标显示地方,采用如下方法传递数据给华为桌面应用


Bundle extra =new Bundle();
extra.putString("package", "xxxxxx");
extra.putString("class", "yyyyyyy");
extra.putInt("badgenumber", i);
context.getContentResolver().call(Uri.parse("content://com.huawei.android.launcher.settings/badge/"), "change_badge", null, extra);

package:应用包名

class:桌面图标对应的应用入口Activity类

badgenumber:角标数字

附加华为开发者联盟传送门

oppo

网上开源的ShortcutBadger里面实现了oppo的角标功能,亲测发现只有部分机型可用,在oppo的2.1系统上可以使用,3.0以后就不行了。实际上,oppo对角标的管控比较严,跟oppo客服联系过,若要使用角标功能,必须提交申请,审核通过了才能开放,官方给的具体审核标准如下:

申请角标接入规则(应用必须适配OPPO手机,保证角标功能测试通过)

​ a) 系统应用

​ b) 国内外各区域用户量排名Top5的三方即时通讯类应用,且只允许显示即时通信消息类通知(如QQ、微信、facebook、line)

​ c) OPPO公司内部费商业化及运营性质的办公类型即时通信应用(如Teamtalk)

​ 4) 国内外邮件类应用(各区域各属于用户量第一梯队的应用)

oppo开放平台 也可以发邮件至[email protected] 咨询

小米

小米官方文档

三星

三星手机首先是申请权限,然后通过广播添加角标。

 
   

 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);

vivo

vivo、三星、小米手机、htc都比较友好,都通过广播设置角标,亲测都有效

 Intent intent = new Intent("launcher.action.CHANGE_APPLICATION_NOTIFICATION_NUM");
            intent.putExtra("packageName", context.getPackageName());
            intent.putExtra("className", launcherclassname);
            intent.putExtra("notificationNum", count);
            context.sendBroadcast(intent);

htc

申请权限


   

 ComponentName cn = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName()).getComponent();

            Intent intent1 = new Intent("com.htc.launcher.action.SET_NOTIFICATION");
            intent1.putExtra("com.htc.launcher.extra.COMPONENT", cn.flattenToShortString());
            intent1.putExtra("com.htc.launcher.extra.COUNT", badgeCount);

            Intent intent = new Intent("com.htc.launcher.action.UPDATE_SHORTCUT");
            intent.putExtra("packagename", cn.getPackageName());
            intent.putExtra("count", badgeCount);

            ct.sendBroadcast(intent1);
            ct.sendBroadcast(intent);

以上是所有亲测有效可以设置桌面角标的厂商,其余的SONY、LG等等大家可以参考ShortcutBadger 或是在官网开发者论文里面查找,另外魅族厂商是不支持角标显示功能的。


————————————————
版权声明:本文为CSDN博主「何框框」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u014006343/article/details/77978359

更多相关文章

  1. Android(安卓)实现对话框圆角功能
  2. android系统开发 AP 和 BP 简要说明
  3. Android状态栏功能介绍
  4. Android开发中使用sqlite实现新闻收藏和取消收藏的功能
  5. eWeek:谷歌Android急需改进的十点功能
  6. Android图片加载库:最全面的Picasso讲解
  7. 推荐几个可提高开发效率的Android(安卓)studio插件
  8. Android(安卓)极光推送快速开发集成指南
  9. Android微信支付功能集成【全攻略】

随机推荐

  1. Android(安卓)启动过程详解
  2. mac 上启动模拟器
  3. 修改ListView 分割线Seperator line
  4. Android通讯:通话
  5. 如何以编程方式退出android应用程序
  6. Android(安卓)Studio 配置快捷方式生成JN
  7. 基于Socket的Android手机视频实时传输
  8. Android(安卓)报错处理:Android(安卓)reso
  9. 安卓USB开发教程 安卓 AOA 2.0
  10. android listview 的一些属性