x-share-s 系统分享
调用系统分享,把文本、链接、图片、音视频或任意文件发给其它应用。参数与回调对齐 DCloud uni.shareWithSystem,方法名使用 xShare,避免和 uni.share 重名。
App 端不需要配置微信 / QQ 等三方 SDK。手机上能接收该类型内容的应用都会出现在列表里。
兼容性
| Harmony | IOS | Android | WEB | 小程序 |
|---|---|---|---|---|
| 支持 | 支持 | 支持 | 文本/链接 | 图片/视频/文件 |
建议单次分享不要超过 30MB,部分机型会卡顿。
调用
ts
import { xShare } from "@/uni_modules/x-share-s"
xShare({
summary: "欢迎使用 x-share-s",
success: (res) => {
console.log(res.errMsg)
},
fail: (err) => {
console.log(err.errCode, err.errMsg)
}
})未传 type 时按内容自动推断:有图片走 image,有 path 时按扩展名判断,否则为 text。
ts
xShare({ summary: "一段文本" })
xShare({ href: "https://uniapp.dcloud.net.cn" })
xShare({ imageUrl: "/static/logo.png" })
xShare({ path: tempFilePath })
xShare({
type: "file",
filePaths: [pdfPath],
title: "分享文件"
})方法
| 名称 | 说明 |
|---|---|
| xShare | 打开分享。App 成功表示已经调起系统面板,不代表用户一定分享成功 |
参数
XShareOptions
| 字段 | 说明 | 默认 |
|---|---|---|
| type | text / image / video / audio / file。不传则自动推断 | text |
| title | Android 选择器标题;鸿蒙预览标题 | - |
| summary | 文字内容 | - |
| href | 链接,需 http/https | - |
| imageUrl | 单张本地图片 | - |
| imagePaths | 多张本地图片 | - |
| videoPaths | 本地视频 | - |
| audioPaths | 本地音频 | - |
| filePaths | 本地文件 | - |
| path | 单个本地路径快捷字段 | - |
| success | 成功 | - |
| fail | 失败 | - |
| complete | 结束 | - |
路径支持 /static/...、绝对路径、file://、Android content://。App 只支持本地文件。微信小程序可用本地/临时路径,网络图会先下载到临时文件。
错误码
| 码 | 含义 |
|---|---|
| 1001 | 系统错误 |
| 1002 | 分享内容为空或 type 非法 |
| 1003 | 图片路径无效 |
| 1004 | 链接无效 |
| 1005 | 视频路径无效 |
| 1006 | 文件不存在 |
| 1007 | 音频路径无效 |
| 1008 | 当前平台不支持 |
| 1009 | 用户取消 |
平台差异
- Android 分享链接到微信只能以文本发出;同时带图片和链接时,微信通常只收图片。
- iOS 可以把链接作为独立项目分享;图片 + 链接时,部分应用会把图片当题图。选图/选文件返回的 tmp 绝对路径不要再走
convert2AbsFullPath(那是给/static用的),否则会报路径无效。 - Web 走
navigator.share,仅文本和链接。 - 微信小程序:图片用
wx.showShareImageMenu,视频用wx.shareVideoMessage,文件/音频用wx.shareFileMessage。一次只分享列表中的第一项,且必须是本地或临时路径(wxfile://、http://tmp、选图/截图返回值)。包内/static/...会先经wx.getImageInfo转成本地路径;网络图会先wx.downloadFile。文本和链接请用页面onShareAppMessage。 - App 的
success表示系统分享面板已打开。Android / iOS / 鸿蒙无法可靠得知用户最终点了哪个应用。 - Android 已内置 FileProvider,一般不用再往工程根目录拷贝清单。
- 鸿蒙发起分享不需要在
module.json5配 skills(那是接收分享用的)。选文件/相册拿到的 URI 只有临时权限,Share Kit 读不到,会提示「文本不存在」或「文件不支持分享」。插件会先拷到应用沙箱,再用fileUri.getUriFromPath转成file://<bundleName>/...,并按后缀填精确 UTD。
版本
版权归 https://xui.tmui.design 你不得修改及二次开发,仅供 TMUI4 会员商用使用。不得转给非 VIP 会员使用,一经查实数倍赔偿,并追究法律责任。
更新日志
1.1.5(2026-08-16)
- iOS 增加
info.plist语言配置(zh-Hans开发语言 + Localizations),系统分享面板不再固定英文。
1.1.4(2026-08-16)
- iOS 选图后分享不再转 UIImage,并等相册 dismiss 完再 present,避免一直停在「分享中」。
1.1.3(2026-08-16)
- iOS 选图/选文件后再分享不再先
convert2AbsFullPath:临时绝对路径被当成包内相对路径后会报 1003/1006 路径无效。改为先按原路径/file://检查存在,包内/static才回退转换。
1.1.2(2026-08-16)
- 鸿蒙分享文件先拷到沙箱再
fileUri.getUriFromPath,避免选文件临时 URI 被 Share Kit 报「文本不存在」
1.1.1(2026-08-16)
- 修复微信小程序分享图片报
the type of property "src" is illegal:只传原始字符串路径,先getImageInfo再showShareImageMenu
1.1.0(2026-08-16)
- 重写为 DCloud 风格:
xShare({ type, summary, href, imageUrl, ... }),带 success / fail / complete - 参数规范化,对齐
uni.shareWithSystem;可用path快捷分享单个文件,未传 type 时自动推断 - 微信小程序支持图片(
wx.showShareImageMenu)、视频(wx.shareVideoMessage)、文件(wx.shareFileMessage) - 鸿蒙改为系统 Share Kit;Android 内置 FileProvider
1.0.8(2025-08-17)
- 兼容原生鸿蒙
1.0.6(2024-09-22)
- 修改可能的文件无法读取的问题,有的用户把文件存在到非缓存目录.可能导致文件无法读取.
1.0.5(2024-08-24)
- 经过测试可以在uniapp上分享啦。也能在ios上分享,可以分享文本和链接到微信中,具体操作请购买后联系我。
1.0.4(2024-08-06)
- 安卓端改了下判断逻辑
1.0.3(2024-08-05)
- 解决uniapp项目无法在安卓上分享本地图片资源问题
1.0.2(2024-07-30)
IOS支持分享文件,视频,音频,图片到微信。
1.0.1(2024-07-11)
修改支持本地路径文件,兼容uniapp项目。
1.0.0(2024-06-01)
分享内容到其它应用 安卓,ios支持。
