自定义RemoteViews通知无法在锁屏显示,仅Pixel设备正常,求助
自定义锁屏通知不显示的解决方案
核心排查点与修复步骤
1. 确认通知渠道的锁屏可见性配置
虽然你提到已设置VISIBILITY_PUBLIC,但需确保通知渠道本身的锁屏可见性是正确配置的,而非仅在通知构建器中设置。创建渠道时需补充:
val channel = NotificationChannel(INCOMING_VIDEO_CALL_CHANNEL_ID, "来电通知", NotificationManager.IMPORTANCE_HIGH).apply { // 明确设置锁屏显示模式 lockscreenVisibility = Notification.VISIBILITY_PUBLIC // 其他渠道配置(如声音、震动等) }
部分非原生Android系统(如小米、华为、OPPO等)对渠道权限管控更严格,必须确保渠道层面的锁屏参数配置到位。
2. 调整setFullScreenIntent的参数
你当前代码中使用了setFullScreenIntent(receiveCallPendingIntent, true),该方法会触发全屏Activity直接启动,部分厂商系统会因此跳过锁屏通知的展示逻辑。可尝试将第二个参数改为false,让系统优先在锁屏显示通知:
.setFullScreenIntent(receiveCallPendingIntent, false)
如果必须保留全屏跳转,需在目标Activity中添加锁屏显示权限:
window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED or WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON)
3. 适配厂商自定义系统的通知权限
非Pixel的国产Android系统存在额外的通知管控逻辑,需手动开启对应权限:
- 小米/红米:进入「设置-通知与控制中心-通知管理」,找到应用,开启「锁屏通知」并设置为「显示所有内容」。
- 华为/荣耀:进入「设置-通知-更多通知设置」,将「锁屏通知」设为「显示所有通知内容」,同时检查应用的「在锁屏上显示」权限是否开启。
- OPPO/一加:进入「设置-通知与状态栏-通知管理」,找到应用,开启「锁屏通知」并选择「显示内容」。
4. 检查RemoteViews布局兼容性
自定义RemoteViews布局可能因厂商限制无法在锁屏渲染:
- 仅使用系统支持的View类型(如
TextView、ImageView、Button),避免自定义View或复杂嵌套布局。 - 确保布局尺寸适配锁屏区域,避免因布局过大被系统截断。
5. 同步FCM推送配置
如果通知通过FCM后台推送,需确保FCM消息的notification字段配置了对应参数:
{ "notification": { "title": "来电提醒", "body": "XXX来电", "priority": "high", "visibility": "public" }, "data": { // 自定义业务数据 } }
FCM后台配置的参数会覆盖本地部分设置,需保持两端配置一致。
内容的提问来源于stack exchange,提问作者prasanth nag
相关产品推荐
相关产品推荐

