如何不让前台服务的持续通知计入应用角标计数?
解决前台服务通知不计入应用角标计数的问题
要让Ongoing类型的前台服务通知不被计入应用角标计数,你需要在通知渠道和通知本身两个层面配置禁用角标显示:
1. 修改通知渠道配置
在创建NotificationChannel时,调用setShowBadge(false)方法,禁用该渠道下所有通知的角标显示:
fun createNotificationChannel(context: Context) { val channel = NotificationChannel(CHANNEL_ID, _NOTIFICATION_CHANNEL_ID, NotificationManager.IMPORTANCE_DEFAULT) // 禁用渠道的角标显示 channel.setShowBadge(false) val nm = context.getSystemService(NotificationManager::class.java) as NotificationManager nm.createNotificationChannel(channel) }
2. 修改通知实例配置
在构建Notification时,同样调用setShowBadge(false)方法,确保当前通知单独禁用角标(部分厂商设备需要此配置作为补充):
fun createNotification(context: Context, remoteViews: RemoteViews) = NotificationCompat.Builder(context, NOTIFICATION_CHANNEL_ID) .setPriority(NotificationCompat.PRIORITY_LOW) .setSmallIcon(R.drawable.ic_notification) .setContentTitle("notification") .setContentText("notification") .setOngoing(true) // 禁用当前通知的角标显示 .setShowBadge(false) .setStyle(NotificationCompat.DecoratedCustomViewStyle()) .setCustomContentView(remoteViews) .setCustomBigContentView(remoteViews) .setContentIntent(getClickPendingIntent(context))
补充说明
- 该配置仅对Android 8.0(API 26)及以上版本生效,因为通知渠道是Oreo引入的特性。
- 部分定制化ROM(如小米、华为)可能有自己的角标规则,上述配置是符合官方标准的实现,大部分主流厂商都会兼容。
内容的提问来源于stack exchange,提问作者Juhyun Park
相关产品推荐
相关产品推荐

