参考长时任务示例:https://gitee.com/openharmony/applications\_app\_samples/tree/master/code/BasicFeature/TaskManagement/ContinuousTask9800006长时任务通知信息校验失败,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/errorcode-backgroundtaskmgr-V5\#section9800006-长时任务通知信息校验失败示例参考如下:import common from '@ohos.app.ability.common'; import abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl'; import wantAgent, { WantAgent } from '@ohos.app.ability.wantAgent'; import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager'; import { BusinessError } from '@ohos.base'; import avSession from '@ohos.multimedia.avsession'; import media from '@ohos.multimedia.media'; @Entry @Component struct audioPlay { private context = getContext(this) as common.UIAbilityContext private scroller: Scroller = new Scroller() private avSession?: avSession.AVSession private player?: media.AVPlayer async start() { if (!this.player) { await this.loadAvplayer() } else { this.player.play() } } async stop() { this.player?.stop() } async loadAvplayer() { if (!this.context) { return } this.player = await media.createAVPlayer() this.player.on("timeUpdate", (time) => { }) this.registerCallBack() try { let rawMp3File = await this.context.resourceManager.getRawFd("ring.mp3") this.player.fdSrc = rawMp3File; } catch (e) { } } registerCallBack() { this.player?.on("stateChange", async (state: media.AVPlayerState, reason) => { switch (state) { case "idle": break case "initialized": this.player?.prepare().then(() => { }, () => { }); break case "prepared": if (this.player) { this.player.play() } break case "playing": if (this.player) { this.player.loop = true } break case 'paused': break case 'completed': break case 'stopped': if (this.player) { this.player.play() } break case 'released': break default: break } }) } startContinuousTask() { if (!this.context) { return } if (!this.avSession) { this.createAVSession(this.context) } this.start() let wantAgentInfo: wantAgent.WantAgentInfo = { // 点击通知后,将要执行的动作列表 wants: [ { bundleName: this.context.abilityInfo.bundleName, abilityName: this.context.abilityInfo.name } ], // 点击通知后,动作类型 operationType: wantAgent.OperationType.START_ABILITY, // 使用者自定义的一个私有值 requestCode: 0, // 点击通知后,动作执行属性 wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] }; // 通过wantAgent模块下getWantAgent方法获取WantAgent对象 wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj: WantAgent) => { backgroundTaskManager.startBackgroundRunning(this.context, backgroundTaskManager.BackgroundMode.AUDIO_PLAYBACK, wantAgentObj).then(() => { console.info(`Succeeded in operationing startBackgroundRunning.`); }).catch((err: BusinessError) => { console.error(`Failed to operation startBackgroundRunning. Code is ${err.code}, message is ${err.message}`); }); }); } stopContinuousTask() { backgroundTaskManager.stopBackgroundRunning(this.context).then(() => { this.destroyAVSession() console.info(`Succeeded in operationing stopBackgroundRunning.`); }).catch((err: BusinessError) => { console.error(`Failed to operation stopBackgroundRunning. Code is ${err.code}, message is ${err.message}`); }); } createAVSession(context: common.UIAbilityContext): void { avSession.createAVSession(context, 'player', 'audio').then((data) => { this.avSession = data; }); }; destroyAVSession(): void { this.avSession?.destroy(); }; aboutToAppear() { } build() { Navigation() { Scroll(this.scroller) { Column() { Button("开始音频播放长时任务") .height(50) .onClick(() => { this.startContinuousTask() }) Button("取消音频播放长时任务") .height(50) .onClick(() => { this.stopContinuousTask() }) } .width('100%') } } .titleMode(NavigationTitleMode.Mini) .hideBackButton(true) } }
参考长时任务示例:https://gitee.com/openharmony/applications\_app\_samples/tree/master/code/BasicFeature/TaskManagement/ContinuousTask
9800006长时任务通知信息校验失败,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/errorcode-backgroundtaskmgr-V5\#section9800006-长时任务通知信息校验失败
示例参考如下: