项目场景:
实现app外部图标红点数量可以控制。
问题描述
不同的手机有不同的设置方法。首先是vivo手机的设置方法:
/** * vivo手机创建角标 * 只有非vivo推送渠道并且8.0以上手机才可以使用下列方式 * * @param context * @param num */ @SuppressLint("WrongConstant") public void setVivoBadgeNum(Context context, int num) { try { Intent intent = new Intent(); intent.setAction("launcher.action.CHANGE_APPLICATION_NOTIFICATION_NUM"); intent.addFlags(0x01000000); intent.putExtra("packageName", context.getPackageName()); String launchClassName = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName()).getComponent().getClassName(); Log.i("launchClassName", "setVivoBadgeNum: " + launchClassName); intent.putExtra("className", launchClassName); intent.putExtra("notificationNum", num); context.sendBroadcast(intent); } catch (Exception e) { Log.i("", "setVivoBadgeNum: " + e); } }
华为手机设置方法:
/** * set badge number */ public void setHuaWeiBadgeNum(Context context, int num) { try { Bundle bunlde = new Bundle(); bunlde.putString("package", context.getPackageName()); String launchClassName = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName()).getComponent().getClassName(); bunlde.putString("class", launchClassName); bunlde.putInt("badgenumber", num); context.getContentResolver().call(Uri.parse("content://com.huawei.android.launcher.settings/badge/"), "change_badge", null, bunlde); } catch (Exception e) { Log.i("", "setVivoBadgeNum: " + e); } }
小米手机目前比较特殊,设置完以后,把消息推送清除掉以后,他会自己把红点去除掉, 目前还没有找到好的处理方法。