更新记录

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'
    })
  }
})

平台差异与注意事项

  1. 该模块仅支持 App Android / iOS,不支持 H5。
  2. filePath 必须是本地真实文件路径,网络 URL 不能直接传给 shareFile()
  3. Android 端通过 FileProvider 暴露只读 URI,已在插件内声明 provider 与路径映射。
  4. Android 如果未传 mimeType,会根据文件扩展名自动推断;无法识别时回退到 */*
  5. iOS 用户如果在分享面板中取消分享,当前实现会走失败回调,错误信息为 share cancelled,业务侧要把它视作用户取消,而不是系统异常。
  6. Android 端调用 startActivity() 成功后会立即走 success,它表示分享面板已拉起,不代表对方 App 已完成接收。
  7. iPad 场景下已对 popoverPresentationController 做了兜底锚点处理,避免分享面板弹出异常。

接入建议

  • 文件导出完成后再触发分享,不要在下载未完成时直接拉起分享。
  • 对常见文件类型明确传 mimeType,例如 PDF、PNG、MP3,可提高目标 App 识别率。
  • 业务侧建议把“用户取消分享”和“系统分享失败”区分处理。

源码参考

  • uni_modules/muqian-share-file/package.json
  • uni_modules/muqian-share-file/utssdk/interface.uts
  • uni_modules/muqian-share-file/utssdk/unierror.uts
  • uni_modules/muqian-share-file/utssdk/app-android/index.uts
  • uni_modules/muqian-share-file/utssdk/app-android/MuqianShareFileNative.kt
  • uni_modules/muqian-share-file/utssdk/app-android/AndroidManifest.xml
  • uni_modules/muqian-share-file/utssdk/app-android/res/xml/muqian_share_file_paths.xml
  • uni_modules/muqian-share-file/utssdk/app-ios/index.uts
  • uni_modules/muqian-share-file/utssdk/app-ios/MuqianShareFileNative.swift

隐私、权限声明

1. 本插件需要申请的系统权限列表:

Android 侧通过 FileProvider 分享本地文件,无额外敏感权限申请

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。