系统分享能力集成:调用鸿蒙原生“分享弹窗”一键转发文本/图片/文件 HarmonyOS 5.0.0或以上

当你的 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 推送能力实战:订阅式通知 / 前台服务消息 / 自定义通道构建》

我们将带你构建一个完整的推送通知系统,实现本地提醒、前台常驻通知、业务通道区分等功能,提升用户活跃度与交互体验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值