Android 应用桌面角标显示各厂商规则说明

本文详细介绍如何在Android设备上实现应用桌面角标显示,覆盖华为、小米、OPPO、vivo等主流厂商的方法,包括权限申请、实现代码示例及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

华为

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

a) 声明权限,如下:

<uses-permission android:name=" com.huawei.android.launcher.permission. CHANGE_BADGE"/>
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开放平台 也可以发邮件至devkefu@oppo.com 咨询

小米

小米官方文档

三星

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

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

 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

申请权限

<uses-permission android:name="com.htc.launcher.permission.READ_SETTINGS"/>
    <uses-permission android:name="com.htc.launcher.permission.UPDATE_SHORTCUT"/>

 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

### 安装和配置 Android Studio #### 下载并解压 Android Studio 对于 Arch Linux 用户来说,建议直接从官方网站下载最新版本的 Android Studio 而不是通过 Pacman 来获取较旧版本[^3]。具体操作如下: 前往官方页面 `Download Android Studio and SDK tools` 并选取适合 Linux 系统的 tarball 文件进行下载[^1]。 ```bash wget https://redirector.gvt1.com/edgedl/android/studio/ide-zips/2021.1.1.22/android-studio-2021.1.1.22-linux.tar.gz tar -xzf android-studio-2021.1.1.22-linux.tar.gz ``` #### 启动 Android Studio 进入解压后的文件夹中的 bin 子目录,并执行启动脚本: ```bash cd android-studio/bin ./studio.sh ``` 这一步骤将会引导完成初次设置向导,包括创建桌面快捷方式等选项。 #### 配置环境变量 (可选) 为了方便命令行工具如 adb 或 fastboot 的调用,可以考虑将 `$ANDROID_HOME/tools`, `$ANDROID_HOME/platform-tools` 添加至 PATH 中。编辑用户的 shell profile 文件(比如 `.bashrc` 或者 `.zshrc`),加入下面两行内容: ```bash export ANDROID_HOME=$HOME/Android/Sdk export PATH=$PATH:$ANDROID_HOME/emulator:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools ``` 使更改生效: ```bash source ~/.bashrc # 如果使用的是 bash # 或者如果是 zsh 则应为 source ~/.zshrc ``` #### 处理权限问题 当遇到连接设备失败提示 "no permissions" 错误时,可以通过 udev 规则来赋予 USB 设备适当读写权限[^2]。创建一个新的规则文件 `/etc/udev/rules.d/51-android.rules` ,添加类似以下的内容: ```plaintext SUBSYSTEM=="usb", ATTR{idVendor}=="xxxx", MODE="0666" ``` 其中 xxxx 应替换为你所使用的安卓手机厂商对应的 Vendor ID 。保存修改后重新加载 udev 规则和服务: ```bash sudo udevadm control --reload-rules && sudo service udev restart ``` 最后拔插一次USB线让新规则应用上去即可尝试再次检测已连接的移动设备。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值