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

Android 13(SDK34)前台服务媒体通知无法显示在锁屏

Android 13 媒体前台服务通知不显示在锁屏的修复方案

关键修复点

1. 补充Android 13+必填通知权限

Android 13(API 33+)要求必须申请POST_NOTIFICATIONS权限才能显示任何通知,包括前台服务通知。

  • 在AndroidManifest.xml中添加权限声明:
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
  • 在HomeActivity启动服务前动态申请权限:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
    if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
        registerForActivityResult(new ActivityResultContracts.RequestPermission(), isGranted -> {
            if (isGranted) {
                startForegroundService(new Intent(this, MyService.class));
            }
        }).launch(Manifest.permission.POST_NOTIFICATIONS);
    } else {
        startForegroundService(new Intent(this, MyService.class));
    }
}

2. 修复Manifest服务标签的语法错误

你的服务标签存在拼写错误,serviceandroid需拆分为service android,否则服务无法正确注册:

<service
    android:name=".etc.MyService"
    android:foregroundServiceType="mediaPlayback"
    android:permission="android.permission.FOREGROUND_SERVICE"/>

3. 修改通知Category为媒体传输类型

当前代码将通知Category设为CATEGORY_SERVICE,系统会识别为普通服务通知而非媒体通知,需改为CATEGORY_TRANSPORT:

NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)
        // ... 其他属性保持不变
        .setCategory(NotificationCompat.CATEGORY_TRANSPORT) // 替换原CATEGORY_SERVICE
        .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
        // ... 其他属性保持不变

4. 完善MediaSession配置

添加MediaSession回调逻辑,避免系统判定会话非活跃而隐藏锁屏通知:

MediaSessionCompat mediaSession = new MediaSessionCompat(this, "TTS_MediaSession");
mediaSession.setCallback(new MediaSessionCompat.Callback() {
    @Override
    public void onPlay() { super.onPlay(); }
    @Override
    public void onPause() { super.onPause(); }
    @Override
    public void onSkipToPrevious() { super.onSkipToPrevious(); }
    @Override
    public void onSkipToNext() { super.onSkipToNext(); }
});
mediaSession.setActive(true);

5. 验证系统锁屏通知设置

引导用户检查系统权限:

  • 系统设置 → 应用 → 你的应用 → 通知 → 锁屏通知 → 设置为「显示」或「显示敏感内容」

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 19:58:10