更新记录

1.0.0(2026-07-21)

  • 首发跨端系统分享:share / shareText / shareFile / shareImages,及对应 Promise、权限申请、安装检测 API。
  • 支持 previewtitle / 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/textfilesapps

平台兼容性

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 必填;可附带 urlpreviewplatformOptions
shareFile file 必填;可用 type / mimeType
shareImages files 必填;默认 mimeType: 'image/*'
requestSharePermission type / mimeType / 路径推导 Android 读取权限
isShareAppInstalled 仅 Android;targettargetPackages

结果结构

成功 XviewShareResult

字段 说明
errCode 固定 0
errMsg 结果描述
platform android / ios / harmony / web
target 实际目标
targetPackage Android 命中包名,其他端为空串
activityType iOS ActivityType,其他端为空串
sharedCount 参与分享的本地文件数

权限结果 XviewSharePermissionResultgrantedpermissionsplatform 等。

错误码

错误码 说明
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 使用 UIActivityViewControllermail 使用 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 决定,本插件无法强制覆盖。

隐私、权限声明

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

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

插件不采集任何数据

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

暂无用户评论。