HarmonyOS 鸿蒙Next API9 中使用Want组件调用第三方app应用打开文件,遇到权限问题

发布于 1周前 作者 nodeper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next API9 中使用Want组件调用第三方app应用打开文件,遇到权限问题

API9 中使用Want组件调用第三方app应用打开文件,遇到权限问题

我现在是从服务端下载文件(包含pdf、word、图片),先存入应用沙箱中,需要时会点击文件进行打开。采用下面代码在打开时,已经调用起WPS应用了但是提示需要授权,然后授权时,有提示当前文件夹不能授权。各种方式都试了,还是不行,不知道各位有什么好办法。下面是代码:

// 将文件路径转换为URI
const uri = fileUri.getUriFromPath(filePath);
let context = getContext(this) as common.UIAbilityContext;
let newpath = ''
const fileSuffixName = filePath.split('.')[filePath.split('.').length - 1]
fs.open(filePath, fs.OpenMode.READ_WRITE).then((file) => {
  console.info("applog:file fd: " + file.fd);
  newpath = getContext().cacheDir + "/" + new Date().getTime() + "." + fileSuffixName;
  fs.copyFile(file.fd, newpath).then(() => {
    let realuri = "internal://cache/" + newpath.split("cache/")[1];
    // 构建Want对象
    const wantObj = {
      // action: 'ohos.want.action.sendData',
      flags: wantConstant.Flags.FLAG_AUTH_WRITE_URI_PERMISSION | wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
      entities: ['entity.system.browsable'],
      // uri: newpath ,
      uri:  uri,
      type: this.getFileApplcationType(fileSuffixName), // 设置MIME类型为PDF
    };

    // 启动Ability
    context.startAbility(wantObj, (err) => {
      if (err) {
        console.error('Failed to open PDF: ', err);
      } else {
        console.log('PDF opened successfully');
      }
    });
  }).catch((err) => {
    console.info("applog:copy file failed with error message: " + err.message + ", error code: " + err.code);
  });
}).catch((err) => {
  console.info("applog:open file failed with error message: " + err.message + ", error code: " + err.code);
});

cke_193.png


更多关于HarmonyOS 鸿蒙Next API9 中使用Want组件调用第三方app应用打开文件,遇到权限问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

1、API版本过旧建议升级到API12或API13; 2、检查下文件夹权限是否赋予了完全控制权限,如果不行建议找下WPS反馈下;

更多关于HarmonyOS 鸿蒙Next API9 中使用Want组件调用第三方app应用打开文件,遇到权限问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


好的,谢谢

在HarmonyOS 鸿蒙Next API9中,使用Want组件调用第三方应用打开文件时遇到权限问题,通常是因为应用缺少必要的权限声明或者在运行时未正确请求权限。

首先,确保你的应用在config.json文件中已经声明了打开文件所需的权限,例如ohos.permission.READ_EXTERNAL_STORAGE(读取外部存储权限)和ohos.permission.WRITE_EXTERNAL_STORAGE(写入外部存储权限),如果文件位于外部存储。

其次,对于运行时权限(如Android 6.0及以上版本引入的动态权限模型),你需要在代码中检查并请求这些权限。HarmonyOS提供了相应的API来请求权限,例如使用abilityContext.requestPermissionsFromUser方法。

确保在调用第三方应用打开文件之前,应用已经获得了所有必要的权限。如果权限请求被拒绝,你的应用应该妥善处理这种情况,例如通过向用户解释为什么需要这些权限,或者提供一个选项让用户去设置中手动开启权限。

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

回到顶部