当你的 App 中生成了语音、笔记、截图等内容,最自然的动作是什么?
当然是分享!
鸿蒙系统支持调用系统级“分享弹窗”,无需你手动集成第三方 SDK,也不依赖微信、QQ 开发接口,就能完成一键转发到外部应用的操作。
本篇教你:
✅ 如何调用系统原生分享框
✅ 支持分享文本、图片、音频等
✅ 自动拉起微信/QQ/邮箱/蓝牙等通道
✅ 支持自定义分享标题/内容/文件路径
✅ 技术核心模块
能力 | 模块 |
---|---|
系统分享启动能力 | @ohos.ability.wantAgent |
构建分享目标 | Want 构造器 + 分享类型设置 |
启动外部组件/应用 | startAbility() / startAbilityByWantAgent() |
🎯 场景示例
-
分享语音备忘录给微信好友
-
将图片转发到 QQ 空间
-
将文档通过邮件发送
-
蓝牙传输文件到电脑/平板
📦 Step1:构造分享 Want
对象
import wantAgent from '@ohos.ability.wantAgent'
function createShareWant(path: string, mime: string): Want {
return {
action: 'ohos.want.action.sendData',
entities: ['entity.system.default'],
type: mime,
uri: 'file://' + path,
flags: 1
}
}
示例 MIME 类型:
-
图片:
image/png
-
音频:
audio/aac
-
文本:
text/plain
-
PDF:
application/pdf
📦 Step2:构造 WantAgent 并启动分享弹窗
async function shareFile(path: string, mime: string) {
const want = createShareWant(path, mime)
const agentInfo: wantAgent.WantAgentInfo = {
wants: [want],
operationType: wantAgent.OperationType.START_ABILITIES,
requestCode: 0,
flags: [wantAgent.WantAgentFlags.CONSTANT_FLAG]
}
const agent = await wantAgent.getWantAgent(agentInfo)
await wantAgent.triggerWantAgent(agent)
}
📦 Step3:示例用法绑定按钮
Button('分享语音')
.onClick(() => shareFile('/data/user/record/memo_20250513.aac', 'audio/aac'))
Button('分享图片')
.onClick(() => shareFile('/data/media/photo.png', 'image/png'))
✅ 分享多文件(可选)
鸿蒙目前原生支持多文件分享的方式较有限,建议一次分享单个文件。
如需批量分享,可将多个文件打包为 ZIP:
import zlib from '@ohos.zlib'
async function zipAndShare(paths: string[]) {
const zipPath = await zlib.zipFiles(paths, '/data/user/tmp/share.zip')
await shareFile(zipPath, 'application/zip')
}
📦 附加:分享纯文本内容(无需文件)
const want: Want = {
action: 'ohos.want.action.sendData',
type: 'text/plain',
parameters: {
'ohos.want.params.TEXT': '这是我刚刚录制的笔记,超实用!'
}
}
await getContext(this).startAbility(want)
🎨 分享体验优化建议
场景 | 建议操作 |
---|---|
分享内容无反馈 | 分享完成后可弹窗“已发出”提示 |
分享失败 | 判断文件路径是否存在 / 权限问题 |
MIME 不正确 | 会导致无法识别,建议根据文件扩展名设定 |
文件路径非法(无 file://) | 使用 'file://' + path 格式统一处理 |
🧩 小结
你现在已掌握鸿蒙系统原生分享能力:
-
使用 Want 构建分享意图;
-
使用 WantAgent 拉起系统分享弹窗;
-
支持图片、文本、音频、PDF 等类型分享;
-
实现 App → 微信 / QQ / 邮箱 / 蓝牙通道的快速打通。
无需依赖三方 SDK,就能为你的鸿蒙应用打造出色的分享体验。
📘 下一篇预告
《ArkTS 推送能力实战:订阅式通知 / 前台服务消息 / 自定义通道构建》
我们将带你构建一个完整的推送通知系统,实现本地提醒、前台常驻通知、业务通道区分等功能,提升用户活跃度与交互体验。