Android之华为在app图标添加角标

刚开始进入华为开发者联盟官网,发现实现在应用图标上添加未读消息,也就是桌面图标角标的功能时,需要签约,然后还要申请,郁闷的一塌糊涂。最终经过客服沟通,发现华为已经开放了这个功能,目前并不需要商务签约以及开发者申请了。也就是说明下面这些流程都不用了:

1.申请华为证书;

2.与华为商务或市场部签署《API授权证书使用协议》;

3.在华为管理控制台创建移动应用并上传。

现在可以直接在AndroidManifest.xml增加以下权限:

<!--【华为】调用launcher接口方法所需权限-->
<uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE"/>
<!--安装时系统依据此权限识别该应用的证书,并且动态分配权限-->
<uses-permission android:name="com.huawei.permission.sec.MDM"/>
<uses-permission android:name="com.huawei.permission.sec.SDK_LAUNCHER"/>
<uses-permission android:name="com.huawei.android.launcher.permission.WRITE_SETTINGS"/>
<!-- 【华为】调用launcher接口方法所需权限-->

然后在需要的地方调用如下代码:

/***
 * 将未读消息数传给华为launcher
 */
public void setBadgeNum() {
    checkIsSupportedByVersion ();
        try{
            if (isSupportedBade) {
                /***
                 * package:应用包名
                 * class:桌面图标对应的应用入口Activity类,也就是你app的MainActivity
                 * badgenumber:角标数字(必须为大于或等于0的数字,为0时不显示角标)。
                 */
                int num = 2;
                String launcherClassName = "com.swissabl.ui.SplashActivity";//启动的Activity完整名称
                Bundle extra = new Bundle();//需要存储的数据
                extra.putString("package", getPackageName());//包名
                extra.putString("class", launcherClassName);//main activity
                extra.putInt("badgenumber", num);//未读信息条数
                getContentResolver().call(Uri.parse("content://com.huawei.android.launcher.settings/badge/"), "change_badge", null, extra);
            }
        }catch (SecurityException e){
            e.printStackTrace();
        }
}
  
/**
 * 判断当前系统是否支持华为桌面角标功能
 */
public void checkIsSupportedByVersion () {
    try {
        PackageManager manager = getPackageManager();
        PackageInfo info = manager.getPackageInfo("com.huawei.android.launcher", 0);
        if (info.versionCode >= 63029) {
            isSupportedBade = true;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

发表回复

后才能评论