| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- import { fileShare, fileIo as fs, fileUri } from '@kit.CoreFileKit';
- import { FileUtil } from '@pura/harmony-utils';
- //权限类
- class PermissionUtil {
- //激活权限
- async activatePermission(uri: string | undefined): Promise<boolean> {
- 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<fileShare.PolicyInfo> = [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<fileShare.PolicyInfo> = [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<boolean> {
- 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<fileShare.PolicyInfo> = [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();
|