HarmonyOS 鸿蒙Next:申请ohos.permission.READ_WRITE_DOCUMENTS_DIRECTORY权限后无法立即创建文件夹,提示权限未获取,再次进入App可正常创建

HarmonyOS 鸿蒙Next:申请ohos.permission.READ_WRITE_DOCUMENTS_DIRECTORY权限后无法立即创建文件夹,提示权限未获取,再次进入App可正常创建

class baseData {
  permissions: Array<Permissions> = ['ohos.permission.READ_WRITE_DOCUMENTS_DIRECTORY'];
}

reqPermissionsFromUser() {
  let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
  atManager.requestPermissionsFromUser(getContext(this) as common.UIAbilityContext, baseData.permissions)
    .then(async (data) => {
      let grantStatus: Array<number> = data.authResults;
      let length: number = grantStatus.length;
      for (let i = 0; i < length; i++) {
        if (grantStatus[i] === 0) {
          // 用户授权,可以继续访问目标操作
          let documentsPath = Environment.getUserDocumentDir();
          let baseUrl = documentsPath + "/files";
          fs.mkdir(baseUrl, (err: BusinessError) => {
            if (err) {
              // 提示没有权限,创建失败。再次进入App则可以正常创建
              console.error("mkdir failed with error message: " + err.message + ", error code: " + err.code);
            } else {
              console.info("mkdir succeed");
              AppStorage.setOrCreate('baseFileUrl', baseUrl)
              this.creteDir(baseUrl)
            }
          })
        } else {
          // 用户拒绝授权,提示用户必须授权才能访问当前页面的功能,并引导用户到系统设置中打开相应的权限

        }
      }
    })
    .catch((err: BusinessError) => {
      console.error(`Failed to request permissions from user. Code is ${err.code}, message is ${err.message}`);
    })
}

async aboutToAppear() {
  this.reqPermissionsFromUser();
}

更多关于HarmonyOS 鸿蒙Next:申请ohos.permission.READ_WRITE_DOCUMENTS_DIRECTORY权限后无法立即创建文件夹,提示权限未获取,再次进入App可正常创建的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

是平板

更多关于HarmonyOS 鸿蒙Next:申请ohos.permission.READ_WRITE_DOCUMENTS_DIRECTORY权限后无法立即创建文件夹,提示权限未获取,再次进入App可正常创建的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对帖子标题中提到的HarmonyOS(鸿蒙)Next系统中,申请ohos.permission.READ_WRITE_DOCUMENTS_DIRECTORY权限后无法立即创建文件夹的问题,这通常是由于权限申请与生效之间的异步处理所致。

在鸿蒙系统中,当用户首次申请敏感权限(如读写文档目录)时,系统会弹出一个对话框让用户确认是否授权。尽管用户可能已经授权,但应用可能需要等待系统完成权限的最终确认和处理,这一过程可能是异步的。因此,在权限对话框关闭后立即尝试执行需要该权限的操作(如创建文件夹),可能会因为权限尚未完全生效而失败。

解决此问题的一种方法是,在应用尝试执行需要权限的操作前,加入适当的延迟或检查机制,确保权限已经生效。此外,也可以监听权限变化的事件,当权限状态变为已授权后再执行相关操作。

如果应用逻辑允许,还可以提示用户在授权后重新进入应用,以确保所有权限都已正确生效。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部