HarmonyOS 鸿蒙Next文件分享失败

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

HarmonyOS 鸿蒙Next文件分享失败

需求: 在应用页面中点击分享按钮,将文件分享给微信(不需要系统级的选择分享应用弹窗,直接跳转至微信分享)

问题: 目前还没有微信测试版资格,所以先参照了 文件分享 这篇文档,实现测试代码:

let filePath = this.context.getApplicationContext().tempDir + '/test.txt';
console.log(filePath)
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: 'text/plain'
}
this.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}`);
  });

filePath如下: cke_15343.jpg

文件路径如下:

cke_170194.jpg

运行之后报错:

10-22 17:12:31.056   57612-57612   C01332/om.exam...ate/UIAbility  pid-57612             E     [ui_ability_impl.cpp:408]null applicationContext or lifecycleCallback
10-22 17:12:31.060   57612-57633   C057C6/om.exam...BinderInvoker  pid-57612             I     BinderInvoker 92: created invoker 1472488960
10-22 17:12:31.089   57612-57614   C01331/om.exam...plate/Context  pid-57612             E     [ability_context_impl.cpp:931]null uiContent
10-22 17:12:31.089   57612-57627   C01331/om.exam...plate/Context  pid-57612             E     [ability_context_impl.cpp:156]ret=2097199
10-22 17:12:31.090   57612-57612   A03D00/om.exam...emplate/JSAPP  pid-57612             E     Invoke startAbility failed, code is 16000019, message is Can not match any component.

请问有没有运行成功的朋友?我是哪里实现的有问题呢?打扰各位了

另外在安卓的微信文件分享实现中,我们会这样实现:

Intent intent = new Intent(Intent.ACTION_SEND);
ComponentName cop = new ComponentName('com.tencent.mm', 'com.tencent.mm.ui.tools.ShareImgUI');
intent.setComponent(cop);
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
intent.setType("*/*");
intent.putExtra(Intent.EXTRA_STREAM, uri);
context.startActivity(Intent.createChooser(intent, "分享至"));
  • 请问ComponentName中的两个参数从哪里获取?
  • 官方案例的这种方式是否可以实现直接跳转至微信分享,而不是弹出应用分享的弹窗?

更多关于HarmonyOS 鸿蒙Next文件分享失败的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复

微信没抢到emmm,android不懂emmmmmm

关于楼主上述代码报错为16000019 隐式启动未查找到匹配应用,意思就是那两个系统应用没有匹配当前demo导致分享失败。

关于文件分享报错code指导可查看链接:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/errorcode-ability-V5#section16000019-

在进行文件分享隐式want匹配时,需要目标应用包含action、type、uri字段并且满足匹配规则,可见以下链接:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/explicit-implicit-want-mappings-V5#

更多关于HarmonyOS 鸿蒙Next文件分享失败的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


感谢,我尝试着去改一下,看看是否能解决。

不过这个官方例子应该是有问题的,

因为我需要指定abilityName和bundleName,在官方文档中似乎在应用间跳转似乎需要openLink而不是使用want,但是应用文件分享目前给出的例子是隐式want,官方是否有使用openLink在应用件分享文件的例子呢?

微信分享与其他分享跳转的不一样,可以参考下微信官方的分享对接文档: https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Share_and_Favorites/ohos.html

感谢
目前微信sdk并没有支持文件分享,我先使用隐式want试试吧,

通过点击按钮触发的方式也尝试过,弹窗成功触发,但是选择了系统应用后依然不能成功分享

针对“HarmonyOS 鸿蒙Next文件分享失败”的问题,可能的原因及解决方向如下:

  1. 网络问题:检查设备是否连接到稳定的网络,确保网络通畅无阻。网络不稳定或信号弱可能导致文件分享失败。

  2. 权限设置:确认是否已授予应用必要的文件访问和分享权限。在鸿蒙系统中,应用权限管理严格,缺少权限可能导致功能受限。

  3. 文件格式或大小限制:检查要分享的文件是否符合接收方的要求,包括文件格式和大小。某些平台或应用对分享的文件有特定限制。

  4. 系统或应用版本:确保鸿蒙系统和相关应用均为最新版本。旧版本可能存在已知漏洞或不支持某些功能,更新到最新版本可能解决问题。

  5. 缓存问题:尝试清除应用缓存或重启设备,以消除可能的临时故障或冲突。

  6. 文件状态:确认文件未被其他应用占用或锁定,处于可分享状态。

如果以上方法均未能解决问题,可能是系统或应用内部的深层问题。此时,建议直接联系官网客服以获取更专业的技术支持。官网地址是:https://www.itying.com/category-93-b0.html 如果问题依旧没法解决请联系官网客服。

回到顶部