鸿蒙Next中ohos.want.action.senddata文件分享功能如何使用
在鸿蒙Next系统中,ohos.want.action.senddata这个Action的具体用法是什么?我想实现应用间的文件分享功能,但不太清楚如何配置Want参数以及接收方该如何处理。能否提供一个完整的代码示例,包括发送文件的Intent构建和接收方的数据解析步骤?
2 回复
鸿蒙Next中,用ohos.want.action.senddata分享文件?简单!先创建Want对象,设置action为"ohos.want.action.senddata",再塞入文件URI和类型。最后用startAbility()甩出去就行。注意权限别忘开,不然系统会傲娇地拒绝你!
更多关于鸿蒙Next中ohos.want.action.senddata文件分享功能如何使用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在鸿蒙Next中,使用ohos.want.action.sendData实现文件分享功能,主要通过Want机制和FilePicker选择文件。以下是核心步骤和代码示例:
1. 发起文件分享
使用Want指定action为ohos.want.action.sendData,并附加文件URI和类型。
import common from '@ohos.app.ability.common';
import fileUri from '@ohos.file.fileuri';
// 在Ability或UIAbility中调用
async shareFile(context: common.Context, filePath: string) {
let want = {
action: 'ohos.want.action.sendData',
entities: ['entity.system.share'],
uri: fileUri.getUriFromPath(filePath), // 转换为URI格式
type: 'image/*' // 根据文件类型修改,如 text/plain、application/pdf
};
try {
await context.startAbility(want);
console.log('文件分享已触发');
} catch (error) {
console.error('分享失败:', error.code);
}
}
2. 选择文件并分享
结合FilePicker选择文件后调用分享:
import picker from '@ohos.file.picker';
async openFilePicker(context: common.Context) {
const photoPicker = new picker.PhotoViewPicker();
try {
const photoSelectOptions = new picker.PhotoSelectOptions();
photoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE; // 限制为图片
photoSelectOptions.maxSelectNumber = 1; // 选择单文件
const result = await photoPicker.select(photoSelectOptions);
if (result && result.photoUris.length > 0) {
await this.shareFile(context, result.photoUris[0]); // 传递URI
}
} catch (error) {
console.error('文件选择失败:', error.code);
}
}
3. 接收分享的文件
在接收方Ability的onCreate或onNewWant中处理:
import UIAbility from '@ohos.app.ability.UIAbility';
export default class EntryAbility extends UIAbility {
onCreate(want, launchParam) {
if (want.action === 'ohos.want.action.sendData') {
const fileUri = want.uri; // 获取分享的文件URI
// 读取或处理文件内容
console.log('接收到文件URI:', fileUri);
}
}
}
关键点:
- URI转换:使用
fileUri.getUriFromPath()将路径转为URI。 - 类型匹配:
type字段需与文件MIME类型一致,确保目标应用能正确响应。 - 权限声明:在
module.json5中声明文件读写权限:{ "module": { "requestPermissions": [ { "name": "ohos.permission.READ_MEDIA", "reason": "$string:reason" } ] } }
实际使用时,需根据文件类型调整type,并处理URI的读写权限。此方法适用于图片、文档等常见文件分享场景。

