往期鸿蒙全套实战文章必看:(附带鸿蒙全栈学习资料)


 如何实现通过调用其他已安装的应用来打开特定文件

开发者可以通过使用隐式Want机制来调用其他应用打开文件。通过设置合适的携带的数据(uri)、MIME type类型(type)、处理Want的方式(flag)等字段,以便系统能够识别并弹出一个选择框,让用户选择合适的应用来打开文件,效果示意如下图所示。

图1 效果示意图

调用方

  1. 导入相关模块。
    // xxx.ets 
    import common from '@ohos.app.ability.common'; 
    import Want from '@ohos.app.ability.Want'; 
    import wantConstant from '@ohos.app.ability.wantConstant'; 
    import { BusinessError } from '@ohos.base';
  2. 构造请求数据。
    // xxx.ets 
    // 构造请求数据Want,以打开word文件为例 
    let wantInfo: Want = { 
      uri: ‘file://.../test.docx’, // 表示待打开文件的URI路径,一般配合type使用 
      type: ‘application/msword’, // 表示待打开文件的类型 
      flags: wantConstant.Flags.FLAG_AUTH_WRITE_URI_PERMISSION, // 表示对URI执行写入操作的授权 
    }
  3. 调用接口启动。
    // xxx.ets 
    // 调用startAbility接口进行文件打开 
    context.startAbility(wantInfo).then(() => { 
      // ... 
    }).catch((err: BusinessError) => { 
      // ... 
    })

目标方

module.json5配置文件中注册文件打开能力。

{ 
  "module": { 
    // ... 
    "abilities": [ 
      { 
        // ... 
        "skills": [ 
          { 
            "actions": [ 
              "ohos.want.action.viewData" // 声明数据处理能力 
            ], 
            "uris": [ 
              { 
                // 允许打开uri中以file://协议开头标识本地的word文件 
                "scheme": "file", 
                "type": "application/msword", // 表示支持打开的文件类型 
                "linkFeature": "FileOpen" // 表示此URI的功能为文件打开 
              } 
              // ... 
            ] 
            // ... 
          } 
        ] 
      } 
    ] 
  } 
}

注册文件打开能力的目标方应用,在应用市场上架时会进行相应的审核。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐