1/* 2 * Copyright (c) Huawei Technologies Co., Ltd. 2024-2024. All rights reserved. 3 */ 4import wantConstant from '@ohos.app.ability.wantConstant'; 5import fileShare from '@ohos.fileshare'; 6import { BusinessError } from '@ohos.base'; 7 8import { Logger } from '../common/util/HiLogger' 9import { LocalAudioFile } from './localaudio/LocalAudioFile' 10import { LocalAudioManager } from './localaudio/LocalAudioManager' 11import { Constants } from '../constant/Constants'; 12 13const logger: Logger = new Logger('LocalResourceManager') 14 15export class LocalResourceManager { 16 17 /** 18 * 本地歌曲资源管理类 todo 改全局注册 19 */ 20 public localAudioManager: LocalAudioManager = new LocalAudioManager() 21 22 public getLocalAudioResource(offset: number, limit: number, context: Context): Promise<Array<LocalAudioFile>> { 23 return this.localAudioManager.getLocalAudio(offset, limit, context) 24 } 25 26 /** 27 * 用户选择文件后,返回结果URI列表并赋予临时权限 28 */ 29 public terminateSelfWithResult(localAudioFile: Array<LocalAudioFile>): Promise<Array<string>> { 30 //赋予权限就放在audiopicker模块,直接调系统接口 31 return new Promise(async (resolve) => { 32 let uriList: string[] = [] 33 for(let item of localAudioFile) { 34 try { 35 await fileShare.grantUriPermission(item.uri, Constants.AUDIO_PICKER_BUNDLE, wantConstant 36 .Flags.FLAG_AUTH_READ_URI_PERMISSION | wantConstant.Flags.FLAG_AUTH_WRITE_URI_PERMISSION) 37 uriList.push(item.uri) 38 logger.info('push uriList length: ' + uriList.length) 39 } catch (err) { 40 let error: BusinessError = err as BusinessError; 41 logger.error('grantUriPermission failed with error:' + JSON.stringify(error)); 42 resolve([]) 43 return 44 } 45 } 46 logger.info('Permission uriList length: ' + uriList.length) 47 resolve(uriList) 48 }) 49 } 50} 51