HarmonyOS 鸿蒙Next文件分享失败
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如下:
文件路径如下:
运行之后报错:
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
感谢,我尝试着去改一下,看看是否能解决。
不过这个官方例子应该是有问题的,
因为我需要指定abilityName和bundleName,在官方文档中似乎在应用间跳转似乎需要openLink而不是使用want,但是应用文件分享目前给出的例子是隐式want,官方是否有使用openLink在应用件分享文件的例子呢?
微信分享与其他分享跳转的不一样,可以参考下微信官方的分享对接文档: https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Share_and_Favorites/ohos.html
感谢
目前微信sdk并没有支持文件分享,我先使用隐式want试试吧,
通过点击按钮触发的方式也尝试过,弹窗成功触发,但是选择了系统应用后依然不能成功分享
针对“HarmonyOS 鸿蒙Next文件分享失败”的问题,可能的原因及解决方向如下:
-
网络问题:检查设备是否连接到稳定的网络,确保网络通畅无阻。网络不稳定或信号弱可能导致文件分享失败。
-
权限设置:确认是否已授予应用必要的文件访问和分享权限。在鸿蒙系统中,应用权限管理严格,缺少权限可能导致功能受限。
-
文件格式或大小限制:检查要分享的文件是否符合接收方的要求,包括文件格式和大小。某些平台或应用对分享的文件有特定限制。
-
系统或应用版本:确保鸿蒙系统和相关应用均为最新版本。旧版本可能存在已知漏洞或不支持某些功能,更新到最新版本可能解决问题。
-
缓存问题:尝试清除应用缓存或重启设备,以消除可能的临时故障或冲突。
-
文件状态:确认文件未被其他应用占用或锁定,处于可分享状态。
如果以上方法均未能解决问题,可能是系统或应用内部的深层问题。此时,建议直接联系官网客服以获取更专业的技术支持。官网地址是:https://www.itying.com/category-93-b0.html 如果问题依旧没法解决请联系官网客服。