可以使用如下方式:
1. 概述
角标是华为桌面提供给各应用显示未读消息用的,会在应用图标右上角绘制一张消息条数的图标。
1.1 架构
下图展示了华为桌面角标SDK 的架构。
1.2 支持平台
系统版本:EMUI4.1 及以上
桌面版本:6.3.29
支持设备:华为设备
2. 角标功能开发指南
1、声明权限
< uses - permission android: name = "android.permission.INTERNET" / >
<
uses - permission android: name = "com.huawei.android.launcher.permission.CHANGE_BADGE " / >
2、在需要进行角标显示地方,采用如下方法传递数据给华为桌面应用。
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:角标数字
示例:
boolean mIsSupportedBade = true;
if (mIsSupportedBade) {
setBadgeNum(num);
}
/** set badge number*/
public void setBadgeNum(int num) {
try {
Bundle bunlde = new Bundle();
bunlde.putString("package", "com.test.badge"); // com.test.badge is your package name
bunlde.putString("class", "com.test. badge.MainActivity"); // com.test. badge.MainActivity is your apk main activity
bunlde.putInt("badgenumber", num);
this.getContentResolver().call(Uri.parse("content://com.huawei.android.launcher.settings/badge/"), "change_badge", null, bunlde);
} catch (Exception e) {
mIsSupportedBade = false;
}
}
3、特殊情形考虑:
对于第三应用打开和退出时,是否还继续显示角标取决应用传递的值(badgenumber为0时,不显示角标;badgenumber大于0时,显示角标)。
当第三方应用package和class发生变化时,需传递该变化后的信息。
3. FAQ
[问题一]在调用角标接口前是否一定要事先获取桌面是否支持角标功能?
此功能为可选项,非必需操作。当桌面不支持角标功能时,接口会抛出异常,应用可以在调用接口的地方加上try … catch(Exception e) 语句以免程序崩溃。