已添加至DND绕过列表,通知仍无法绕过请勿打扰模式?
解决通知无法绕过DND模式的问题
你当前的配置覆盖了部分基础要求,但还需要补充几个关键设置,才能确保应用在加入DND绕过列表后,通知能正常触发:
必须配置通知渠道的DND绕过权限:从Android O(API 26)开始,通知渠道的优先级会直接覆盖
setPriority的设置,且只有渠道级配置才能真正生效DND绕过。你需要创建一个具备绕过DND能力的渠道,并将通知关联到该渠道:// 仅需初始化一次通知渠道 val channelId = "emergency_call_channel" val channel = NotificationChannel( channelId, "紧急通话通知", NotificationManager.IMPORTANCE_HIGH ).apply { description = "用于绕过DND的高优先级通话类通知" setBypassDnd(true) // 核心配置:允许该渠道的通知绕过DND } val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager notificationManager.createNotificationChannel(channel) // 构建通知时绑定渠道 val notification = NotificationCompat.Builder(this, channelId) .setPriority(NotificationCompat.PRIORITY_MAX) .setCategory(NotificationCompat.CATEGORY_CALL) .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE)) // 补充必要的通知内容(小图标、标题、正文是必填项) .setSmallIcon(R.drawable.ic_notification_call) .setContentTitle("紧急来电提醒") .setContentText("XXX正在呼叫你") .build()添加锁屏可见性配置:确保在锁屏且DND启用时,通知能正常显示,需补充:
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)检查设备端DND例外配置细节:
- Pixel设备:进入「设置 > 声音和振动 > 请勿打扰 > 允许例外情况 > 应用」,确认你的应用不仅在列表中,还开启了「允许通知」和「允许声音」选项。
- Samsung设备:进入「设置 > 通知 > 高级设置 > 请勿打扰 > 允许的应用」,确保应用的「通知」「声音」权限均已启用,部分机型需额外开启「弹出通知」权限。
可选:添加全屏意图增强优先级:对于通话类通知,可通过
setFullScreenIntent直接唤起全屏界面(需申请USE_FULL_SCREEN_INTENT权限),进一步确保DND模式下通知能被用户感知:val fullScreenIntent = Intent(this, CallIncomingActivity::class.java) val fullScreenPendingIntent = PendingIntent.getActivity( this, 0, fullScreenIntent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE ) .setFullScreenIntent(fullScreenPendingIntent, true)
测试前请确认:已删除旧的通知渠道(若之前创建过),重新运行应用生成新渠道;同时覆盖Android O以下版本的兼容逻辑(仅需保留setPriority(PRIORITY_MAX)即可)。
内容的提问来源于stack exchange,提问作者MikkelT
相关产品推荐
相关产品推荐

