import { fileShare, fileIo as fs, fileUri } from '@kit.CoreFileKit'; import { FileUtil } from '@pura/harmony-utils'; //权限类 class PermissionUtil { //激活权限 async activatePermission(uri: string | undefined): Promise { if (!uri) { return false } try { let fd = fs.openSync(uri); fs.closeSync(fd); console.log("onecold activatePermission 无需激活权限"); return true } catch { try { if (canIUse('SystemCapability.FileManagement.AppFileService.FolderAuthorization')) { uri = FileUtil.getUriFromPath(uri) console.log('onecold 激活权限 activatePermission uri = '+uri); let policyInfo: fileShare.PolicyInfo = { uri: uri, operationMode: fileShare.OperationMode.READ_MODE | fileShare.OperationMode.WRITE_MODE, }; let policies: Array = [policyInfo]; let results = await fileShare.checkPersistentPermission(policies); for (let i = 0; i < results.length; i++) { if (results[i]) { let info: fileShare.PolicyInfo = { uri: policies[i].uri, operationMode: policies[i].operationMode, }; let policy: Array = [info]; await fileShare.activatePermission(policy); console.log('onecold activatePermission 激活权限成功'); } } let fd = fs.openSync(uri); fs.closeSync(fd); } return true } catch (error) { console.error('onecold activatePermission error = '+JSON.stringify(error)); if (error.code == 13900001 ) { await this.persistPermission(uri) } return false } } } //持久化权限 async persistPermission(uri: string): Promise { try { if (canIUse('SystemCapability.FileManagement.AppFileService.FolderAuthorization')) { let policyInfo: fileShare.PolicyInfo = { uri: uri, operationMode: fileShare.OperationMode.READ_MODE | fileShare.OperationMode.WRITE_MODE, }; let policies: Array = [policyInfo]; fileShare.persistPermission(policies).then(() => { }) let fd = await fs.open(uri); await fs.close(fd); } } catch (error) { return true } return false } } export default new PermissionUtil();