更新记录
1.0.0(2026-05-18) 下载此版本
- 初始发布
muqian-share-file - 基于 UTS 封装系统文件分享能力,支持 Android、iOS
- Android 使用
Intent.ACTION_SEND+FileProvider - iOS 使用
UIActivityViewController - 提供文件存在性校验、MIME 类型透传与统一错误回调
平台兼容性
uni-app(5.08)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | × | × | × | × | 5.0 | √ | × |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | × | × | × |
muqian-share-file 文档
模块说明
muqian-share-file 用于唤起系统分享面板,把本地文件分享给其他 App。
该插件由 AI 开发,遇到问题建议优先问一下 AI。
当前实现覆盖:
- Android:通过
Intent.ACTION_SEND+FileProvider - iOS:通过
UIActivityViewController
适合用于:
- 分享导出的 PDF、图片、音频、文档
- 把缓存文件交给第三方 App 打开
- 把生成结果分发给微信、QQ、邮件、文件管理器等系统或第三方目标
模块位置
uni_modules/muqian-share-file
平台支持
| 平台 | 支持情况 | 实现方式 |
|---|---|---|
| Android | 支持 | Intent.ACTION_SEND |
| iOS | 支持 | UIActivityViewController |
| Web/H5 | 不支持 | 无实现 |
最低平台要求:
- Android:
minSdkVersion = 21 - iOS:
deploymentTarget = 12.0
Android 额外依赖:
androidx.core:core-ktx:1.13.1
对外能力
模块导出一个方法:
shareFile(options):分享指定本地文件
shareFile 参数说明
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
filePath |
string |
是 | - | 本地文件路径,支持普通路径或 file:// 路径 |
fileName |
string |
否 | "" |
分享时展示的文件名提示 |
mimeType |
string |
否 | "" |
文件 MIME 类型,不传时 Android 会尝试自动推断 |
title |
string |
否 | "" |
系统分享面板标题 |
success |
(res) => void |
否 | - | 分享动作成功发起或完成 |
fail |
(err) => void |
否 | - | 分享失败回调 |
complete |
(res) => void |
否 | - | 完成回调 |
成功回调返回:
{ errMsg: 'shareFile:ok' }
失败回调返回:
{
errSubject: 'muqian-share-file',
errCode: 9011002,
errMsg: 'shareFile:fail file does not exist'
}
错误码
| 错误码 | 含义 |
|---|---|
9011001 |
filePath 为空 |
9011002 |
文件不存在 |
9011003 |
Android 无可处理分享动作的 App |
9011004 |
分享动作失败 |
使用示例
import { shareFile } from '@/uni_modules/muqian-share-file'
export function sharePdf(filePath) {
shareFile({
filePath,
fileName: 'report.pdf',
mimeType: 'application/pdf',
title: '分享文件',
success(res) {
console.log('已拉起分享', res)
},
fail(err) {
console.error('分享失败', err)
uni.showToast({
title: err.errMsg || '分享失败',
icon: 'none'
})
}
})
}
如果文件是先下载或先生成的,建议先确认路径存在,再调用分享:
uni.getFileSystemManager().access({
path: filePath,
success() {
sharePdf(filePath)
},
fail() {
uni.showToast({
title: '文件不存在',
icon: 'none'
})
}
})
平台差异与注意事项
- 该模块仅支持 App Android / iOS,不支持 H5。
filePath必须是本地真实文件路径,网络 URL 不能直接传给shareFile()。- Android 端通过
FileProvider暴露只读 URI,已在插件内声明 provider 与路径映射。 - Android 如果未传
mimeType,会根据文件扩展名自动推断;无法识别时回退到*/*。 - iOS 用户如果在分享面板中取消分享,当前实现会走失败回调,错误信息为
share cancelled,业务侧要把它视作用户取消,而不是系统异常。 - Android 端调用
startActivity()成功后会立即走success,它表示分享面板已拉起,不代表对方 App 已完成接收。 - iPad 场景下已对
popoverPresentationController做了兜底锚点处理,避免分享面板弹出异常。
接入建议
- 文件导出完成后再触发分享,不要在下载未完成时直接拉起分享。
- 对常见文件类型明确传
mimeType,例如 PDF、PNG、MP3,可提高目标 App 识别率。 - 业务侧建议把“用户取消分享”和“系统分享失败”区分处理。
源码参考
uni_modules/muqian-share-file/package.jsonuni_modules/muqian-share-file/utssdk/interface.utsuni_modules/muqian-share-file/utssdk/unierror.utsuni_modules/muqian-share-file/utssdk/app-android/index.utsuni_modules/muqian-share-file/utssdk/app-android/MuqianShareFileNative.ktuni_modules/muqian-share-file/utssdk/app-android/AndroidManifest.xmluni_modules/muqian-share-file/utssdk/app-android/res/xml/muqian_share_file_paths.xmluni_modules/muqian-share-file/utssdk/app-ios/index.utsuni_modules/muqian-share-file/utssdk/app-ios/MuqianShareFileNative.swift

收藏人数:
下载插件并导入HBuilderX
赞赏(0)
下载 3
赞赏 0
下载 11969815
赞赏 1914
赞赏
京公网安备:11010802035340号