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

三星Android 13设备锁屏不显示Media Session通知问题求助

解决三星Android 13设备锁屏不显示媒体通知的问题

针对你遇到的媒体通知在三星Android 13锁屏界面不显示、但其他设备正常的问题,结合你的代码给出以下排查和修复方案:

1. 确保POST_NOTIFICATIONS权限完成动态申请

Android 13及以上版本,POST_NOTIFICATIONS权限需要用户主动授权,仅在代码中做权限检查不足以覆盖场景。在用户触发播放操作前,主动发起权限申请:

// 在Activity或Service中添加权限申请逻辑
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.POST_NOTIFICATIONS), 101)
    }
}

2. 提升通知渠道的重要性等级

三星Android 13对通知渠道的优先级判定更严格,当前代码使用的IMPORTANCE_DEFAULT可能无法满足锁屏显示要求。修改通知渠道配置:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    val channel = NotificationChannel(
        "channel_id",
        "媒体播放控制",
        NotificationManager.IMPORTANCE_HIGH // 改为高优先级
    )
    channel.lockscreenVisibility = Notification.VISIBILITY_PUBLIC // 明确允许锁屏显示完整内容
    val notificationManager = getSystemService(NotificationManager::class.java)
    notificationManager?.createNotificationChannel(channel)
}

3. 完善MediaSession元数据设置

三星系统可能依赖完整的媒体元数据识别合法的媒体通知,确保updateMetadata()方法正确设置元数据:

private fun updateMetadata() {
    val musicData = MusicManager.MusicDataProvider.getMusicData() ?: return
    val metadata = MediaMetadataCompat.Builder()
        .putString(MediaMetadataCompat.METADATA_KEY_TITLE, musicData.songName)
        .putString(MediaMetadataCompat.METADATA_KEY_ARTIST, musicData.artistName)
        .putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, image ?: run {
            val drawable = ContextCompat.getDrawable(this, R.drawable.img_lifestyle_music) as BitmapDrawable
            drawable.bitmap
        })
        .build()
    mediaSession.setMetadata(metadata)
}

4. 规范前台服务启动时机

Android 13限制后台启动前台服务,必须在用户交互触发的场景(比如用户点击播放按钮)下调用startForeground(),避免在Service.onCreate()中直接启动。

5. 调整PendingIntent的Flag(可选)

针对Android 13,尝试将PendingIntent的FLAG_IMMUTABLE替换为FLAG_MUTABLE(仅API 31+支持),适配部分定制系统的兼容性要求:

val pendingIntentFlags = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
    PendingIntent.FLAG_MUTABLE
} else {
    PendingIntent.FLAG_IMMUTABLE
}

// 创建PendingIntent时使用该flags
PendingIntent.getActivity(
    this, 0, pendingIntent,
    pendingIntentFlags
)

6. 检查三星系统的锁屏通知设置

引导用户手动确认设备设置:

  • 打开「设置」→「通知」→ 找到你的应用
  • 点击「锁屏通知」→ 选择「显示所有内容」
  • 关闭「隐藏敏感内容」选项

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 10:17:38