HarmonyOS鸿蒙Next中分享文件给其他应用提示16000019错误

HarmonyOS鸿蒙Next中分享文件给其他应用提示16000019错误 使用应用分享文件功能,分享给第三方应用,比如系统的音乐播放器,代码参照文档,只改了want 里面的type,但是每次都是提示16000019,不管是分享文本,图片,音频都一样,type设置成*/*也无效,然后回弹出选择窗,里面有电子邮件,AI隐私保护,信息,微博4个选项,

let filePath: string = "/data/storage/el2/base/haps/entry/files/CacheRoot/FileTransfer/DownloadTemp/xxx.mp3"

let uri = fileUri.getUriFromPath(filePath)
let want: Want = {
// 配置被分享文件的读写权限,例如对被分享应用进行读写授权
flags: wantConstant.Flags.FLAG_AUTH_WRITE_URI_PERMISSION | wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
// 配置分享应用的隐式拉起规则
action: 'ohos.want.action.sendData',
uri: uri,
type: 'audio/x-mpeg'
}

context!.startAbility(want)
.then(() => {
console.info('Invoke getCurrentBundleStats succeeded.');
})
.catch((err: BusinessError) => {
console.error(`Invoke startAbility failed, code is ${err.code}, message is ${err.message}`);
});

更多关于HarmonyOS鸿蒙Next中分享文件给其他应用提示16000019错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

经过测试发现在api 11又出了一个ShareKit

需要使用以下的方式:

import { systemShare } from '@kit.ShareKit';
import { uniformTypeDescriptor as utd } from '@kit.ArkData';   

const uri = fileUri.getUriFromPath(logFile)
const shareData = new systemShare.SharedData({
  utd: utd.UniformDataType.TEXT,
  uri: uri
});

let controller = new systemShare.ShareController(shareData);
try {
  const context = getContext() as common.UIAbilityContext
  controller.show(context, {})
  logger.info('分享成功')
} catch (e) {
  logger.error('分享失败', e)
}

我测试可以正常唤起分享面板,分享给大家。

ShareKit 文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/share-system-share-V13

更多关于HarmonyOS鸿蒙Next中分享文件给其他应用提示16000019错误的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


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.sendData',
            action: 'ohos.want.action.viewData',
            uri: uri,
            //type:'text/plain'
            type: 'application/word'
            //type:'image/png'
          }

          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

在HarmonyOS鸿蒙Next中,分享文件给其他应用时提示16000019错误,通常是由于文件路径或应用权限配置不当所致。首先,确认文件路径是否正确,文件是否存在。其次,检查应用权限,确保应用具有读取和分享文件的权限。如果问题仍然存在,可能是系统或应用的临时故障,尝试重启设备或重新安装相关应用。

在HarmonyOS鸿蒙Next中,分享文件时遇到错误代码16000019,通常是由于文件路径或权限问题导致的。请按照以下步骤进行排查和解决:

  • 检查文件路径:确保文件路径正确且文件存在。
  • 权限设置:确认应用具有读取和分享文件的权限。
  • 文件格式:确保文件格式受支持,避免使用特殊字符或过长文件名。
  • 系统更新:检查系统是否为最新版本,必要时进行更新。
  • 重启设备:尝试重启设备,重新分享文件。

如果问题依旧存在,建议联系华为技术支持获取进一步帮助。

回到顶部