三星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
相关产品推荐
相关产品推荐

