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

自定义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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 18:44:58