更新记录
1.0.0(2026-07-21)
- 首发跨端系统分享:
share / shareText / shareFile / shareImages,及对应 Promise、权限申请、安装检测 API。
- 支持
preview(title / summary / image;不用 description 以免 iOS 与 NSObject 冲突)与 platformOptions。
- Android:文本、链接、文件、多图、指定应用;FileProvider 授权与媒体权限分流。
- iOS:系统分享面板 + Mail 收件人;LinkPresentation 预览。
- HarmonyOS:Share Kit 多记录分享;有文件时不单独加文本记录;
selectionMode 默认 batch。
- Web:Web Share API 文本/链接;本地路径文件不支持。
- 提供 uni-app / uni-app x 示例:
pages/share/text、files、apps。
平台兼容性
uni-app(4.87)
| Vue2 |
Vue3 |
Chrome |
Safari |
app-vue |
app-nvue |
Android |
iOS |
鸿蒙 |
| √ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
| 微信小程序 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
小红书小程序 |
快应用-华为 |
快应用-联盟 |
| × |
× |
× |
× |
× |
× |
× |
× |
× |
× |
× |
× |
uni-app x(5.0)
| Chrome |
Safari |
Android |
iOS |
鸿蒙 |
微信小程序 |
| √ |
√ |
√ |
√ |
√ |
× |
xview-share
跨平台系统分享 UTS 插件。统一封装 Android / iOS / HarmonyOS / Web 的系统分享能力,公共 API 一致;平台差异体现在能力边界与返回错误,不改变调用方式。
支持:文本、链接、单文件、多图片、多文件、系统面板预览(preview)、平台专属配置(platformOptions)。Android 额外支持按包名直达与安装检测。
平台能力
| 能力 |
Android |
iOS |
HarmonyOS |
Web |
| 文本 / 链接 |
√ |
√ |
√ |
√ |
| 单文件 |
√ FileProvider |
√ App 可读路径 |
√ file:// + UTD |
- |
| 多图片 / 多文件 |
√ SEND_MULTIPLE |
√ |
√ 多记录,默认 batch |
- |
preview 预览 |
√ |
√ LinkPresentation |
√ 缩略图 |
仅 title/text |
| 指定应用 |
√ target / targetPackages |
仅 mail |
- |
- |
| 邮件收件人 |
√ |
√ |
- |
- |
| 权限申请 |
√ |
无需 |
无需 |
无需 |
| 安装检测 |
√ |
- |
- |
- |
说明:不支持的端会返回统一错误码(如 9040002),或同步接口返回 false,不会抛出未捕获异常。
快速使用
import {
requestSharePermission,
share,
shareAsync,
shareText,
shareTextAsync,
shareFile,
shareImages,
isShareAppInstalled
} from '@/uni_modules/xview-share'
// Android 分享外部媒体前可先申请权限
requestSharePermission({
type: 'file',
mimeType: '*/*',
files: [
'/storage/emulated/0/Download/a.jpg',
'/storage/emulated/0/Download/a.mp4'
],
success: (res) => {
console.log('权限', res.granted, res.permissions)
}
})
shareText({
title: '推荐应用',
text: 'xview-share 支持系统分享',
url: 'https://uniapp.dcloud.net.cn',
success: (res) => console.log('成功', res),
fail: (err) => console.log('失败', err.errCode, err.errMsg)
})
shareTextAsync({
title: 'Promise 分享',
text: 'Async 接口返回 Promise'
}).then((res) => {
console.log(res)
}).catch((err) => {
console.log(err.errCode, err.errMsg)
})
shareFile({
title: '分享文件',
file: '/storage/emulated/0/Download/report.pdf',
type: 'file',
mimeType: 'application/pdf'
})
shareImages({
title: '多图片分享',
files: [
'/storage/emulated/0/Pictures/a.jpg',
'/storage/emulated/0/Pictures/b.jpg'
]
})
// 仅 Android 有效
if (isShareAppInstalled({ target: 'wechat' })) {
share({
title: '分享到指定应用',
text: 'Android 自定义包名示例',
target: 'custom',
targetPackages: ['com.tencent.mm']
})
}
// 预览与平台专属配置
share({
title: '业务标题',
text: '正文',
url: 'https://uniapp.dcloud.net.cn',
type: 'url',
preview: {
title: '系统面板预览标题',
summary: '系统面板预览摘要',
image: '/storage/emulated/0/Download/preview.jpg'
},
platformOptions: {
android: { htmlText: '<p>可选 HTML 正文</p>' },
harmony: { previewMode: 'detail', selectionMode: 'batch' },
mail: { to: ['demo@example.com'] }
}
})
API 一览
| 方法 |
说明 |
Android |
iOS |
HarmonyOS |
Web |
share |
通用分享;至少传 text / url / file / files 之一 |
√ |
√ |
√ |
仅文本/链接 |
shareAsync |
share 的 Promise 版 |
√ |
√ |
√ |
仅文本/链接 |
shareText |
文本/链接快捷分享;text 必填 |
√ |
√ |
√ |
√ |
shareTextAsync |
shareText 的 Promise 版 |
√ |
√ |
√ |
√ |
shareFile |
单文件快捷分享;file 必填 |
√ |
√ |
√ |
- |
shareFileAsync |
shareFile 的 Promise 版 |
√ |
√ |
√ |
- |
shareImages |
多图片快捷分享;files 必填,默认 mimeType: 'image/*' |
√ |
√ |
√ |
- |
shareImagesAsync |
shareImages 的 Promise 版 |
√ |
√ |
√ |
- |
requestSharePermission |
申请分享所需读取权限 |
√ |
空成功 |
空成功 |
空成功 |
requestSharePermissionAsync |
权限申请 Promise 版 |
√ |
空成功 |
空成功 |
空成功 |
isShareAppInstalled |
检测指定应用是否可直达分享 |
√ |
false |
false |
false |
Promise 版参数与回调版一致;若同时传入 success / fail / complete,回调仍会触发。Web 的文件类接口返回 9040002。
share(options)
| 参数 |
类型 |
说明 |
| title |
string |
分享标题 |
| text |
string |
正文 |
| url |
string |
http:// / https:// 链接 |
| file |
string |
单文件本地路径 |
| files |
string[] |
多文件路径;多图片配合 type: 'image' |
| type |
string |
text / url / image / video / audio / file |
| mimeType |
string |
自定义 MIME |
| target |
string |
system / wechat / qq / dingtalk / feishu / weibo / mail / custom |
| targetPackages |
string[] |
Android 候选包名;custom 时必填 |
| chooserTitle |
string |
Android 分享面板标题 |
| preview |
object |
系统面板预览,见下表 |
| platformOptions |
object |
平台专属配置,见下表 |
| success / fail / complete |
function |
回调 |
preview
| 字段 |
类型 |
说明 |
| title |
string |
预览标题;空则回退 options.title |
| summary |
string |
预览摘要;Android 会合并进 EXTRA_TEXT(不用 description,避免 iOS 与 NSObject 冲突) |
| image |
string |
本地预览缩略图;Web 忽略 |
platformOptions
| 字段 |
类型 |
说明 |
| android.htmlText |
string |
Intent.EXTRA_HTML_TEXT |
| ios.excludedActivityTypes |
string[] |
排除的 iOS ActivityType |
| harmony.previewMode |
string |
default / detail,默认 default |
| harmony.selectionMode |
string |
single / batch,默认 batch |
| mail.to / cc / bcc |
string[] |
Android Intent / iOS Mail 收件人 |
其他快捷方法
| 方法 |
要点 |
shareText |
text 必填;可附带 url、preview、platformOptions |
shareFile |
file 必填;可用 type / mimeType |
shareImages |
files 必填;默认 mimeType: 'image/*' |
requestSharePermission |
按 type / mimeType / 路径推导 Android 读取权限 |
isShareAppInstalled |
仅 Android;target 或 targetPackages |
结果结构
成功 XviewShareResult:
| 字段 |
说明 |
| errCode |
固定 0 |
| errMsg |
结果描述 |
| platform |
android / ios / harmony / web |
| target |
实际目标 |
| targetPackage |
Android 命中包名,其他端为空串 |
| activityType |
iOS ActivityType,其他端为空串 |
| sharedCount |
参与分享的本地文件数 |
权限结果 XviewSharePermissionResult:granted、permissions、platform 等。
错误码
| 错误码 |
说明 |
| 9040001 |
分享内容为空 |
| 9040002 |
当前平台不支持该能力 |
| 9040003 |
链接必须以 http:// 或 https:// 开头 |
| 9040004 |
文件路径无效或不存在 |
| 9040005 |
指定应用未安装或不支持当前分享类型 |
| 9040006 |
系统分享调起失败 |
| 9040007 |
用户取消分享 |
权限与限制
Android
- 本地文件会复制到 App cache,经插件内置 FileProvider 转为
content://,并配合 ClipData 临时授权。
- Android 13+ 且
targetSdkVersion >= 33:图片/视频/音频申请对应 READ_MEDIA_*;否则申请 READ_EXTERNAL_STORAGE。
- 标准调试基座可能未合并 FileProvider,本地路径文件分享会返回
9040006;请用自定义基座或云打包。文本/链接不依赖 FileProvider。
targetPackages 只展示支持当前 Intent/MIME 的候选 Activity;target: 'system' 打开完整面板。
preview.summary 会进入 EXTRA_TEXT;本期不含 Android 14 ChooserAction。
iOS
system 使用 UIActivityViewController;mail 使用 MFMailComposeViewController(主题、正文、附件、收件人)。
- 不支持按包名直达微信/QQ 等;用户取消返回
9040007。
- iOS 13+ 使用 LinkPresentation 渲染预览;无自定义图时回退 App 图标。
HarmonyOS
- 使用 Share Kit:
SharedData + ShareController.show()。
- 路径请用绝对路径、
file://、_doc/、_tmp/;不接受 Android content://。
- 有本地文件时不再单独追加文本记录(
text 写入文件 description),减少「分享为」n 选 1。
selectionMode 默认 batch;需要 n 选 1 时传 single。
- 不支持
htmlText 与邮件收件人配置。
Web
- 仅
navigator.share 文本/链接;路径文件返回 9040002。
preview.title / summary 映射到 Web Share;不伪造系统卡片。
通用
- 微信/QQ 等收到链接后的卡片样式,通常由目标页
og:title / og:description / og:image 决定,本插件无法强制覆盖。