Android 13本地通知自定义声音无法播放问题求助
Android 13 本地通知自定义声音不生效的解决方法
确保渠道更新逻辑正确
Android 8.0+ 通知声音完全绑定到 NotificationChannel,渠道创建后仅调用createNotificationChannel()不会覆盖已有配置,必须用updateNotificationChannel()来更新渠道属性。示例代码:val notificationManager = getSystemService(NotificationManager::class.java) val channel = NotificationChannel(CHANNEL_ID, "自定义通知渠道", NotificationManager.IMPORTANCE_DEFAULT).apply { val audioAttrs = AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_NOTIFICATION) .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) .build() // 设置自定义声音URI setSound(Uri.parse("android.resource://${packageName}/${R.raw.event_sound}"), audioAttrs) } notificationManager.updateNotificationChannel(channel)验证资源URI正确性
自定义声音的URI格式必须为android.resource://[应用包名]/[raw资源ID],注意资源文件名必须全小写(Android资源系统不支持大写)。可以通过日志打印URI确认是否正确,示例写法:val soundUri = Uri.parse("android.resource://${applicationContext.packageName}/${R.raw.event_sound}")移除Builder中的setSound调用
Android 8.0+ 版本中,NotificationCompat.Builder.setSound()的设置会被渠道的声音配置覆盖,所以直接删除这行代码,完全依赖渠道的声音设置即可。检查系统权限与渠道配置
- 确认应用已获取 Android 13+ 要求的
POST_NOTIFICATIONS动态权限; - 手动进入系统设置 → 应用 → 你的应用 → 通知,找到对应渠道,确认声音是否已设为自定义的
event_sound,部分场景下系统不会自动同步渠道更新,可能需要手动触发或重启应用。
- 确认应用已获取 Android 13+ 要求的
使用新通知ID测试
如果之前用同一ID发送过默认声音的通知,系统可能缓存旧配置,换一个新的通知ID发送测试,确保使用更新后的渠道设置。
内容的提问来源于stack exchange,提问作者ant2009
相关产品推荐
相关产品推荐

