You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio Java中通知公开版本无法显示在锁屏的问题

锁屏公开通知不显示的问题排查与修复

1. 通知渠道配置覆盖了单个通知的可见性设置

Android 8.0及以上版本中,通知渠道的锁屏可见性优先级远高于单个通知的setVisibility()配置。如果你的通知渠道设置为显示所有内容,哪怕主通知标记为VISIBILITY_PRIVATE,系统也会直接显示私有通知的完整内容,不会触发publicVersion的替换逻辑。

解决方法:创建/更新通知渠道时,明确设置锁屏可见性为隐藏敏感内容:

NotificationChannel channel = new NotificationChannel(CHANNEL_ID, "服药提醒", NotificationManager.IMPORTANCE_HIGH);
// 关键配置:让渠道支持敏感内容隐藏,触发publicVersion生效
channel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.createNotificationChannel(channel);

2. 系统全局锁屏通知设置未触发替换逻辑

只有当用户设备的全局锁屏通知设置为隐藏敏感内容时,系统才会自动用publicVersion替换私有通知显示在锁屏上。如果设置为显示所有通知内容,系统会直接展示私有通知的完整信息,忽略publicVersion配置。

你需要确认设备的设置 > 通知 > 锁屏通知选项处于“隐藏敏感内容”状态。

3. 冗余的publicVersion可见性设置可能冲突

你的publicNotificationBuilder不需要额外设置setVisibility(NotificationCompat.VISIBILITY_PUBLIC)——publicVersion本身就是用于锁屏公开显示的版本,系统会自动处理其可见性。移除这个冗余设置,避免潜在逻辑冲突:

NotificationCompat.Builder publicNotificationBuilder = new NotificationCompat.Builder(context, CHANNEL_ID)
        .setSmallIcon(R.drawable.icon)
        .setContentTitle(context.getString(R.string.notification))
        .setContentText(publicMessage)
        .setStyle(new NotificationCompat.BigTextStyle().bigText(publicMessage))
        .setPriority(NotificationCompat.PRIORITY_HIGH)
        .setAutoCancel(true)
        .setCategory(NotificationCompat.CATEGORY_ALARM)
        .setContentIntent(actionPendingIntent);

4. 检查通知ID的唯一性

如果重复使用同一个通知ID调用notify(),新通知会直接覆盖旧通知,可能导致publicVersion的替换逻辑未被正确触发。确保每次服药提醒的通知ID是唯一的,比如用时间戳或递增数字作为ID。


内容的提问来源于stack exchange,提问作者Javier Jordán Luque

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 00:42:33