Android 13本地通知不显示问题求助(附代码)
Android 13 通知不显示排查建议
权限验证
- 仅在Manifest声明
POST_NOTIFICATIONS权限不够,Android 13要求必须主动申请运行时权限。检查代码中是否有调用requestPermissions(arrayOf(Manifest.permission.POST_NOTIFICATIONS), 1001)这类逻辑,且用户已授予权限。可以通过checkSelfPermission(Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED验证权限状态。 - 确认模拟器中应用的通知权限已手动开启:进入「设置 > 应用 > 你的应用 > 权限」,确保「通知」权限处于启用状态,部分模拟器默认会关闭新应用的通知权限。
通知渠道检查
- Android 8.0+必须创建有效通知渠道,Android 13对渠道优先级要求更严格:
- 检查是否调用
NotificationManager.createNotificationChannel()创建渠道,且渠道的importance设置为IMPORTANCE_DEFAULT及以上(不能是IMPORTANCE_NONE)。 - 发送通知时指定的渠道ID必须和创建渠道时的ID完全一致,大小写、字符串内容不能有差异。
- 检查是否调用
通知实例构造校验
- 确保通知设置了必填参数:
- 必须通过
setSmallIcon()设置有效小图标,Android 13会直接过滤缺失小图标的通知。 setContentTitle和setContentText不能为空,空内容的通知可能被系统拦截。
- 必须通过
- 确认
NotificationManager.notify()是在主线程调用的,子线程中发送通知可能导致投递失败。
代码逻辑排查
- 验证
AlarmReceiver是否被正确触发:在接收器的onReceive()方法中添加日志,确认该方法确实被执行。 - 检查
PendingIntent的flags配置:Android 13推荐使用PendingIntent.FLAG_IMMUTABLE(如果不需要修改intent)或FLAG_MUTABLE,错误的flags可能导致通知触发失败。
模拟器环境排查
- 确认模拟器系统版本为Android 13(API 33),避免版本不匹配导致的问题。
- 检查通知栏的过滤设置:下拉通知栏,查看是否有折叠的「静默通知」分类,你的通知可能被归类到这里。
内容的提问来源于stack exchange,提问作者John doe
相关产品推荐
相关产品推荐

