HarmonyOS 将pdf,ppt,excel文件使用其他应用打开的问题

将pdf,ppt,excel文件使用其他应用打开的的时候,使用这个代码:

let want: Want = {
   action: 'ohos.want.action.viewData',
   uri: fileUri.getUriFromPath(filePath) ,
   flags:wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION
 };
 context.startAbility(want)
   .then((result)=>{
}).catch((err: BusinessError) => {
})

如果手机里没有对应的应用,会显示“暂无支持此类文件的应用”,现在想做成手机里没有对应的应用,调用如下分享代码:

let want: Want = {
      action: 'ohos.want.action.viewData',
      uri: fileUri.getUriFromPath(filePath) ,
      flags:wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION
    };
    context.startAbility(want)
      .then((result)=>{
        console.log('')
    }).catch((err: BusinessError) => {
      //没有的话调用文件分享
      let data: systemShare.SharedData = new systemShare.SharedData({
        utd: utd.UniformDataType.FILE,
        uri: fileUri.getUriFromPath(filePath)
      });
      let controller: systemShare.ShareController = new systemShare.ShareController(data);
      let callback = () => {
        console.info('Share panel closed');
      };
      controller.on('dismiss', callback);
      controller.off('dismiss', callback);
      // 获取UIAbility上下文对象
      controller.show(context, {
        previewMode: systemShare.SharePreviewMode.DETAIL,
        selectionMode: systemShare.SelectionMode.SINGLE
      });
    })

但这样的话既会弹出分享的界面,在这个界面后边也会弹出“暂无支持此类文件的应用”,请问如何不显示“暂无支持此类文件的应用”弹框,或者将这两个功能集合在一起:在分享界面上展示能打开文件的应用。

HarmonyOS
2024-12-27 14:03:18
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple

文件分享也可以want。用法参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/share-app-file-V5

使用如下demo进行文件分享的操作,是会在分享界面展示能打开文件的应用,同时支持自定义的弹窗提示,弹窗可以自行关闭。

import { common, Want, wantConstant } from '@kit.AbilityKit';
import { fileUri } from '@kit.CoreFileKit';
import { promptAction } from '@kit.ArkUI';
import { BusinessError } from '@kit.BasicServicesKit';
import fs from '@ohos.file.fs';
@Entry
@Component
struct FileWant02 {
  @State message: string = '文件want给其他应用打开测试';
  build() {
    RelativeContainer() {
      Text(this.message)
        .id('HelloWorld')
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
        .alignRules({
          center: { anchor: '__container__', align: VerticalAlign.Center },
          middle: { anchor: '__container__', align: HorizontalAlign.Center }
        })
      Button("点击分享文件")
        .onClick(() => {
          let uiContext = getContext(this) as common.UIAbilityContext;
          //1、获取resource文件,转成buffer,再传到应用沙箱中,再获取应用沙箱中的路径,并转换为文件URI
          //获取rawfile里的图片arrayBuffer
          let filePath = uiContext.filesDir + "/word1.docx"
          //将沙箱路径转换为uri,因为目前不支持直接用路径
          let uri = fileUri.getUriFromPath(filePath);

          //2、设置获取文件的权限以及选择要分享的应用
          let want: Want = {
            //配置被分享文件的读写权限,例如对被分享应用进行读写授权
            flags: wantConstant.Flags.FLAG_AUTH_WRITE_URI_PERMISSION | wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
            //配置分享应用的隐式拉起规则
            action: 'ohos.want.action.viewData',
            uri: uri,
            type: 'application/word'
          }
          console.info("want封装了")
          uiContext.startAbility(want)
            .then(() => {
              console.info("success")
            })
            .catch((err: BusinessError) => {
              //如果没有应用能打开该类型的文件,给个提示
              if (err.code == 16000019) {
                promptAction.showToast({
                  message: "暂无支持此类文件的应用,这个提示是自己设置的,可以关闭"
                })
              }
              console.error('failed,message:' + JSON.stringify(err))
            })
        })
    }
    .height('100%')
    .width('100%')
  }

在分享时如果没有可支持打开该类型文件的应用时,会弹窗提示框"暂无支持此类文件的应用",可以通过canopenlink自己先判断一下,没有支持的应用时可以自己处理相关逻辑,文档链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-bundlemanager-V5#bundlemanagercanopenlink12

分享
微博
QQ
微信
回复
2024-12-27 15:52:37
相关问题
HarmonyOS 如何预览.word/.exe/.ppt/.pdf文件
639浏览 • 1回复 待解决
HarmonyOS excel文件如何打开
320浏览 • 1回复 待解决
HarmonyOS 怎么打开PDF文件
634浏览 • 1回复 待解决
HarmonyOS 应用打开pdf
875浏览 • 1回复 待解决
HarmonyOS 使用PDF kit预览PDF文件
307浏览 • 1回复 待解决
HarmonyOS 使用filePreview打开文件问题
278浏览 • 1回复 待解决
HarmonyOS ArkTS中如何byte[]转成PDF文件
630浏览 • 1回复 待解决
HarmonyOS Web组件打开pdf页面
322浏览 • 1回复 待解决