目录
[一、内置 Share 模块](#一、内置 Share 模块)
[1.1 模块定位](#1.1 模块定位)
[1.2 鸿蒙端专属优势](#1.2 鸿蒙端专属优势)
[二、核心 API 详解:Share.share ()(唯一核心方法)](#二、核心 API 详解:Share.share ()(唯一核心方法))
[2.1 核心参数说明](#2.1 核心参数说明)
[2.2 返回结果说明](#2.2 返回结果说明)
[场景 1:纯文本分享](#场景 1:纯文本分享)
[场景 2:文本 + 链接分享](#场景 2:文本 + 链接分享)
[场景 3:文本 + 本地图片分享](#场景 3:文本 + 本地图片分享)
[4.1 关键细节](#4.1 关键细节)
[4.2 常见问题排查](#4.2 常见问题排查)
一、内置 Share 模块
1.1 模块定位
RN 内置Share模块是鸿蒙端分享的「极简方案」,底层直接对接鸿蒙系统的分享协议,无需额外桥接层,运行流畅无卡顿,是 0 基础开发者和轻量需求的首选。
1.2 鸿蒙端专属优势
- 零依赖零配置 :无需
npm install任何包,无需修改config.json,导入即使用; - 原生体验:分享面板、应用列表、分享交互均为鸿蒙原生样式,贴合用户使用习惯;
- 全应用兼容:支持鸿蒙设备中所有支持分享的应用,无需单独对接各平台 SDK;
- 多内容支持:纯文本、网页链接、本地图片均可分享,满足 99% 的业务场景;
- 版本全覆盖:兼容鸿蒙 2.0 及以上所有版本,适配手机、平板等鸿蒙终端。
二、核心 API 详解:Share.share ()(唯一核心方法)
鸿蒙端仅需掌握Share.share()一个方法,参数简洁且功能强大,所有分享需求均通过该方法实现:
2.1 核心参数说明
| 参数名 | 类型 | 必选 | 说明 | 鸿蒙端适配要点 |
|---|---|---|---|---|
| message | string | 是 | 分享的文本内容,支持换行、特殊字符 | 鸿蒙端自动处理编码,无需手动转义 |
| url | string | 否 | 分享的网页链接(http/https)或本地图片绝对路径 | 本地图片需通过ResourceManager获取路径 |
| title | string | 否 | 分享面板顶部显示的标题 | 鸿蒙端优先显示该标题,无则显示应用名称 |
2.2 返回结果说明
Share.share()返回 Promise 对象,通过结果可判断分享状态:
result.action === Share.sharedAction:分享成功(用户选择应用并完成分享);result.action === Share.dismissedAction:用户取消分享;result.activityType:可选,返回具体分享目标应用的标识(如微信、QQ)。
三、实战场景
场景 1:纯文本分享
javascript
import React from 'react';
import { Share, View, Button, Alert } from 'react-native';
const TextShareDemo = () => {
const handleTextShare = async () => {
try {
const result = await Share.share({
title: '文本分享', // 分享面板标题
message: 'React Native鸿蒙开发太便捷了!内置Share模块零配置就能分享~', // 分享文本
});
// 处理分享结果
if (result.action === Share.sharedAction) {
if (result.activityType) {
Alert.alert('分享成功', `已分享至:${result.activityType}`);
} else {
Alert.alert('分享成功', '文本已成功发送~');
}
} else if (result.action === Share.dismissedAction) {
Alert.alert('分享取消', '您已取消本次分享');
}
} catch (error) {
Alert.alert('分享失败', `原因:${error.message}`);
}
};
return (
<View style={{ marginTop: 50, alignItems: 'center', paddingHorizontal: 20 }}>
<Button
onPress={handleTextShare}
title="分享纯文本"
color="#007DFF"
/>
</View>
);
};
export default TextShareDemo;

场景 2:文本 + 链接分享
javascript
import React from 'react';
import { Share, View, Button, Alert } from 'react-native';
const TextLinkShareDemo = () => {
const handleTextLinkShare = async () => {
try {
const result = await Share.share({
title: 'RN鸿蒙开发教程分享',
message: '推荐一款超实用的RN鸿蒙开发教程,零基础也能快速上手~',
url: 'https://example.com/rn-harmony-tutorial', // 分享的网页链接
});
if (result.action === Share.sharedAction) {
Alert.alert('分享成功', '教程链接已分享,好友可直接点击查看~');
}
} catch (error) {
Alert.alert('分享失败', `请确保设备已安装社交应用:${error.message}`);
}
};
return (
<View style={{ marginTop: 80, alignItems: 'center', paddingHorizontal: 20 }}>
<Button
onPress={handleTextLinkShare}
title="分享文本+链接"
color="#00C853"
/>
</View>
);
};
export default TextLinkShareDemo;

场景 3:文本 + 本地图片分享
javascript
import React from 'react';
import { Share, View, Button, Alert, Image } from 'react-native'; // 导入Image模块
const TextImageShareDemo = () => {
const handleTextImageShare = async () => {
try {
const localImage = require('./images/avatar@1.png');
const imageAsset = Image.resolveAssetSource(localImage);
const imagePath = imageAsset.uri; // 获取图片的可用路径
if (!imagePath) {
Alert.alert('分享失败', '图片路径获取失败,请检查图片位置');
return;
}
const result = await Share.share({
title: '海报分享',
message: '这是RN鸿蒙开发的专属海报,快来一起学习~',
url: imagePath,
});
if (result.action === Share.sharedAction) {
Alert.alert('分享成功', '文本+图片已成功分享~');
}
} catch (error) {
Alert.alert('分享失败', `原因:${error.message}`);
}
};
return (
<View style={{ marginTop: 110, alignItems: 'center', paddingHorizontal: 20 }}>
<Button
onPress={handleTextImageShare}
title="分享文本+图片"
color="#FF6D00"
/>
</View>
);
};
export default TextImageShareDemo;

四、鸿蒙端专属注意事项
4.1 关键细节
- 链接格式 :分享网页链接时需带
http/https前缀,否则鸿蒙系统无法识别; - 权限说明 :鸿蒙端会自动申请分享所需的基础权限,无需手动在
config.json中配置; - 异常捕获 :必须用
try/catch捕获异常(如无可用分享应用、图片不存在等场景)。
4.2 常见问题排查
- 分享无响应:检查真机是否安装社交应用,模拟器需切换为真机测试;
- 图片分享失败:确认图片路径正确(区分大小写),且通过
ResourceManager获取绝对路径; - 链接无法跳转:确保
url参数带http/https前缀; - 分享面板标题不显示:补充
title参数,鸿蒙端优先显示该标题。
欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net