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

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() 的设置会被渠道的声音配置覆盖,所以直接删除这行代码,完全依赖渠道的声音设置即可。

  • 检查系统权限与渠道配置

    1. 确认应用已获取 Android 13+ 要求的 POST_NOTIFICATIONS 动态权限;
    2. 手动进入系统设置 → 应用 → 你的应用 → 通知,找到对应渠道,确认声音是否已设为自定义的 event_sound,部分场景下系统不会自动同步渠道更新,可能需要手动触发或重启应用。
  • 使用新通知ID测试
    如果之前用同一ID发送过默认声音的通知,系统可能缓存旧配置,换一个新的通知ID发送测试,确保使用更新后的渠道设置。

内容的提问来源于stack exchange,提问作者ant2009

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 19:34:49