【关键字】
文件分享 / 指定应用 / 文件类型 / 文本编辑器 / txt文本
【问题描述】
通过以下代码进行文件分享,如何指定应用?文件类型如何设置?如何分享一个txt文本到一个文本编辑器里?
let shareuri = fileUri.getUriFromPath(this.writePath)
let want: object =new Object({
flags: wantConstant.Flags.FLAG_AUTH_WRITE_URI_PERMISSION | wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
// 配置分享应用的隐式拉起规则
action: 'ohos.want.action.sendData',
uri: shareuri,
type: 'text/plain'
});
(getContext() as common.UIAbilityContext).startAbility(want)
.then(() => {
console.info('Invoke getCurrentBundleStats succeeded.');
})
.catch((err: BusinessError) => {
console.error(`Invoke startAbility failed, code is ${err.code}, message is ${err.message}`);
});
【解决方案】
1、文件分享,如何指定应用?
文件分享是基于want的隐式分享,可参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/share-app-file-0000001821000041
want示例代码如下:
want: Want = {
// 配置被分享文件的读写权限,例如对被分享应用进行读写授权
flags: wantConstant.Flags.FLAG_AUTH_WRITE_URI_PERMISSION | wantConstant.Flags.F
LAG_AUTH_READ_URI_PERMISSION,
// 配置分享应用的隐式拉起规则
action: 'ohos.want.action.sendData',
uri: uri,
type: 'text/plain'
}
被分享应用需要在module.json5配置文件的actions标签的值配置为"ohos.want.action.sendData",表示接收应用分享文件,配置uris字段,表示接收URI的类型,即只接收其他应用分享该类型的URI,如下表示本应用只接收scheme为file,类型为txt的文件,示例如下:
{
"module": {
...
"abilities": [
{
...
"skills": [
{
...
"actions": [
"ohos.want.action.sendData"
],
"uris": [
{
"scheme": "file",
"type": "text/plain"
}]}]}]
}
由于当前鸿蒙手机上还没有配置为ohos.want.action.sendData的应用,所以当前分享没有效果,可以自己新建一个工程,按照上面的步骤和文档测试分享和数据接收。
2、文件类型如何设置?
参考want中的type对应的文件类型,即MIME type类型,可参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-app-ability-want-0000001774280554
3、如何分享一个txt文本到一个文本编辑器里?
可以将 action改为 'ohos.want.action.viewData'表示查看文件,再通过右上角的备忘录打开。