HarmonyOS鸿蒙Next中用音视频播控中心实现通知栏控制音频的暂停、播放、上一首下一首,但需要ohos.permission.NOTIFICATION_CONTROLLER权限,邮件申请不过怎么解决

HarmonyOS鸿蒙Next中用音视频播控中心实现通知栏控制音频的暂停、播放、上一首下一首,但需要ohos.permission.NOTIFICATION_CONTROLLER权限,邮件申请不过怎么解决 【问题描述】:目前我是用音视频播控中心实现的通知栏控制音频的暂停、播放、上一首下一首的,但播控中心需要ohos.permission.NOTIFICATION_CONTROLLER权限,这个是系统权限,得单独申请,邮件申请不过 看是怎么解决这个问题

【问题现象】:权限申请不通过 需要提供方案

【版本信息】:HarmonyOS NEXT

【复现代码】:不涉及

3 回复

更多关于HarmonyOS鸿蒙Next中用音视频播控中心实现通知栏控制音频的暂停、播放、上一首下一首,但需要ohos.permission.NOTIFICATION_CONTROLLER权限,邮件申请不过怎么解决的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


使用 AVSession 框架替代 NotificationController。创建 AVSession 实例,设置元数据和播放状态回调,系统自动在通知栏生成媒体控制,无需申请 ohos.permission.NOTIFICATION_CONTROLLER 权限。详情参考官方 @ohos.multimedia.avsession 接口文档。

在HarmonyOS NEXT中,通知栏音频控件依靠 AVSession(音视频会话) 实现,无需申请 ohos.permission.NOTIFICATION_CONTROLLER 系统权限。你邮件申请被拒是因为该权限仅限系统应用管理他人通知,普通应用无法获取。

正确方案是使用 AVSession 框架:

  1. 创建并激活媒体会话 AVSession,设置 AVMetadata(标题、艺术家、曲目等)及播放状态。
  2. 实现 AVSessionCallback 响应播控中心的操作(播放、暂停、上一首、下一首等)。
  3. 通过 AVSessionController 同步播放进度和状态。 系统会根据会话自动生成通知栏控件,无需额外权限。

示例核心代码:

import avSession from '@ohos.multimedia.avsession';

let session = await avSession.createAVSession(context, 'MusicSession', 'audio');
await session.activate();
session.setAVMetadata({
  assetId: '1',
  title: '歌曲名',
  artist: '歌手',
  duration: 200000
});
session.setAVPlaybackState({
  state: avSession.PlaybackState.PLAY_STATE_PLAY,
  speed: 1.0
});
session.on('play', () => { /* 播放逻辑 */ });
session.on('pause', () => { /* 暂停逻辑 */ });
session.on('skipNext', () => { /* 下一首 */ });
session.on('skipPrevious', () => { /* 上一首 */ });

这样即可在通知栏控制音频,完全摆脱系统权限申请问题。

回到顶部