更新记录
1.0.2(2026-09-15)
- iOS 打开系统分享面板后立刻返回
launched(与 Android 一致)。不再等到用户关掉面板,避免面板没弹出时 JS 一直挂起、点击无反应
1.0.1(2026-09-15)
- iOS 与 Android 一样把
_doc/_www转成绝对路径,再打开系统分享面板(业务侧缓存图不再弹 Please try again) - iOS 分享面板避开正在关闭的 loading 弹层,避免被 HUD 挡住或一起关掉
- 分享拷贝最多保留 20 张(先删超过 24 小时的,再按修改时间淘汰最旧的)
1.0.0(2026-09-15)
首个版本。
- Android 使用 FileProvider content URI 调用系统分享,高版本系统面板可预览缩略图
- iOS 使用 UIActivityViewController
- JPEG / PNG 原样分享;WebP / HEIC 等先转 JPEG 再发出,避免预览空白
- 可选直达 Facebook / Instagram(Android);未安装默认回退系统面板
平台兼容性
uni-app(4.27)
| Vue2 | Vue3 | Vue3插件版本 | Chrome | Safari | app-vue | app-nvue | Android | Android插件版本 | iOS | iOS插件版本 | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| - | √ | 1.0.0 | - | - | - | - | 5.0 | 1.0.0 | 13 | 1.0.0 | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - | - | - | - | - |
uni-app x(4.27)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| - | - | - | - | - | - |
fz-social-share 系统图片分享
当前版本:1.0.2(2026-09-15)
零 SDK 依赖的 UTS 插件:把本地图片交给手机系统分享面板。
Android 使用 ACTION_SEND + FileProvider content URI;iOS 使用 UIActivityViewController。
官方 uni.shareWithSystem 在高版本 Android 上读不了应用私有目录,分享面板经常只显示空文件图标。本插件会把图片拷到应用缓存、补上正确扩展名,WebP / HEIC / GIF 先转成 JPEG,再交给系统,预览才能出图。
不接入微信 / Facebook / Instagram SDK,不登录、不上传到插件作者服务器,也无法确认用户在对方 App 里是否点了「发布」。
目录
插件市场上架填写稿
上架 DCloud 插件市场 时,把下面三段贴进审核表单即可。
插件名称
FZ 系统图片分享(Android 预览可见 / WebP 转 JPEG)
一句话简介
UTS 系统分享本地图片。Android 用 FileProvider,高版本分享面板能显示缩略图;WebP / HEIC 自动转 JPEG。不接任何三方 SDK。
详细介绍(市场详情页)
fz-social-share 是 uni-app(Vue3)App 端 UTS 插件,调用系统分享面板发送一张本地图片。
解决的问题:
- uni.shareWithSystem 在 Android 7+ / 高 targetSdk 下分享应用私有目录图片时,系统面板预览空白。
- 业务图经常是 WebP,系统分享面板不认,只显示「1 张图片」空图标。
做法:
- 将本地文件拷贝到应用缓存,JPEG/PNG 原样、其它可解码格式转为 JPEG。
- Android 通过 UTSAndroid.getFileProviderUri 以 content:// 发出,并授予读权限。
- iOS 使用系统 UIActivityViewController。
- 可选 target:system / facebook / instagram。Android 可尝试直达对应 App,未安装则回退系统面板;iOS 始终走系统面板。
不包含广告,不采集用户数据,不向插件作者服务器发送任何内容。图片只交给用户选中的系统分享目标 App。
分类建议
App 插件 → 分享 / 社交
关键词
分享, 系统分享, FileProvider, WebP, Instagram, Facebook, UTS
1. 本插件需要申请的系统权限列表:
无。插件本身不申请相册、存储、相机、网络权限。
调用方若用 uni.chooseImage 选图,需在宿主 App 的 manifest.json 中自行开启 Gallery 模块,并配置 iOS 相册隐私说明(NSPhotoLibraryUsageDescription)。这不属于本插件权限。
2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:
不采集。不读取通讯录、不获取设备标识、不上传图片或路径。
图片仅在设备本地拷贝到应用缓存,再通过系统分享意图交给用户选择的目标 App。插件作者没有任何服务器,插件也不发起网络请求。
3. 本插件是否包含广告:
无广告。无统计 SDK、无开屏/插屏/横幅。
核心特性
| 能力 | 说明 |
|---|---|
| 系统分享面板 | Android Chooser / iOS 分享表,用户自己选微信、相册、邮件等 |
| 分享预览 | Android 使用 FileProvider content://,高版本系统能生成缩略图 |
| 格式兼容 | JPEG / PNG 原样;WebP / HEIC / GIF 等转为 JPEG(质量 90) |
| 路径兼容 | 绝对路径、file://、content://,以及 uni 的 _doc / _www(Android / iOS 都会转绝对路径) |
| 直达三方 | target: 'facebook' \| 'instagram'(仅 Android 尝试直达;iOS 仍是系统面板) |
| 零 SDK | 不引入 Meta / 微信开放平台,不需要 AppID |
限制:单张不超过 30 MB、5000 万像素。不支持一次分享多张、不支持纯文本/链接(本版本只做图片)。分享拷贝放在应用缓存目录,最多 20 张;下次分享时先删超过 24 小时的,再按修改时间淘汰最旧的。
环境要求
| 项 | 要求 |
|---|---|
| HBuilderX | 4.27+ |
| 工程类型 | uni-app Vue3(不是 uni-app x) |
| Android | minSdk 21,建议 targetSdk 34+ |
| iOS | 13.0+ |
| 运行方式 | 必须自定义调试基座或正式云打包。标准基座会报「uts插件编译失败,无法使用」 |
宿主 App 选图另需:app-plus.modules.Gallery,以及 iOS:
NSPhotoLibraryUsageDescription- 如需保存到相册再加
NSPhotoLibraryAddUsageDescription
接入步骤
- 将
uni_modules/fz-social-share复制到目标工程的uni_modules/。 - HBuilderX:运行 → 运行到手机或模拟器 → 制作自定义调试基座,Android / iOS 各打一份并安装。
- 页面里调用(须在用户点击里触发,不能在 onLoad 里自动拉起):
import { shareImage } from '@/uni_modules/fz-social-share'
async function onShare(filePath) {
try {
const res = await shareImage({
imagePath: filePath,
target: 'system',
fallbackToSystem: true
})
// Android / iOS: res.status === 'launched' 只表示面板已打开
console.log(res)
} catch (e) {
uni.showToast({ title: e.errMsg || '分享失败', icon: 'none' })
}
}
参数说明:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| imagePath | string | 是 | 本地路径。不要传 http(s) 网络地址,请先 downloadFile / 自己的缓存 |
| target | string | null | 否 | system(默认)/ facebook / instagram |
| fallbackToSystem | boolean | null | 否 | 三方 App 不可用时是否回退系统面板,默认 true。iOS 端忽略此字段,始终系统面板 |
演示页:本测试工程 pages/share/share(首页「系统图片分享」)。无 Gallery 基座时可点「试用示例图片」。
API
shareImage(options: ShareImageOptions): Promise<ShareImageResult>
ShareImageResult:
| 字段 | 说明 |
|---|---|
| status | Android:launched;iOS:completed / cancelled |
| requestedTarget | 调用时传入的 target |
| route | system 或 direct(仅 Android 直达成功) |
| fallbackUsed | 是否从三方回退到了系统面板 |
| activityType | iOS 系统返回的 activity id,Android 为空 |
| publishedConfirmed | 恒为 false,插件无法证明已发布 |
| message | 可读说明 |
失败时 Promise reject,错误对象为 UniError:errSubject === 'fz-social-share',errCode 见下表。
错误码
| 码 | 含义 | 建议 |
|---|---|---|
| 93201 | 路径或 target 无效 | 先转成本地绝对路径 / file:// |
| 93202 | 读文件或写缓存失败 | 检查文件是否存在、基座存储权限 |
| 93203 | 空图、超过 30MB / 5000 万像素、无法解码 | 换 JPEG/PNG/WebP |
| 93204 | 指定 App 未安装且不允许回退 | 传 fallbackToSystem: true 或改 system |
| 93205 | 没有前台页面 / 打不开面板 | 必须在用户点击里调用 |
| 93206 | 正在准备分享,重复点击 | 按钮加 loading 防抖 |
| 93207 | iOS 禁止回退系统面板 | iOS 不要把 fallback 设为 false |
| 93208 | H5 / 非 App | 仅 App 真机 |
平台差异
| Android | iOS | |
|---|---|---|
| 分享面板 | Intent Chooser | UIActivityViewController |
| 预览空白问题 | FileProvider 解决 | 一般无此问题 |
| Facebook / Instagram | 已安装可直达,否则回退系统面板 | 只能系统面板,用户自己选 App |
| 成功回调含义 | 面板打开即 launched |
面板打开即 launched |
| 是否已发布 | 都不能确认 | 都不能确认 |
隐私合规
上架 Apple App Store / Google Play 时,本插件本身:
- 不申请相册、定位、通讯录、IDFA、通知权限
- 不收集个人信息,不写入隐私营养标签中的「联系人 / 位置 / 标识符」
- 用户分享出去的图片由用户选择的第三方 App 按其自己的隐私政策处理(例如发到 Instagram)。请在宿主 App 隐私政策中写明:「分享功能会把您选择的图片交给系统分享面板及您指定的第三方应用」
若宿主 App 使用 uni.chooseImage 读相册,那是宿主的相册权限,需在商店后台填写「照片和视频」用途:用于选择要分享或编辑的图片。
常见问题
Q: 点分享提示「uts插件[fz-social-share]编译失败,无法使用」?
当前安装的不是包含本插件的自定义基座。改 UTS 源码后必须重新制作并安装自定义基座。
Q: 选图提示「打包时未添加 Gallery 模块」?
uni.chooseImage 需要宿主 manifest.json 里 app-plus.modules.Gallery。加完后重新打基座。与本插件无关。
Q: iOS 点分享立刻提示失败 / Please try again?
1.0.0 不会把 _doc / _www 转成绝对路径,系统读不到文件。升级到 1.0.1 后重新制作 iOS 自定义基座。业务侧不必先 convertLocalFileSystemURL。
Q: Android 分享预览还是空的?
确认传入的是本地文件而不是 https 地址;图不要超过 30MB;WebP 应被转成 jpg 后再发出。必须走本插件,不要再用 uni.shareWithSystem 发 _doc 私有路径。
Q: 能分享网络图吗?
不能直接传 URL。先下载到本地再 shareImage。
Q: 标准基座 / H5 能用吗?
不能。H5 会返回 93208。必须 App 自定义基座或正式包。
Q: 云打包 Android 报 WRITE_EXTERNAL_STORAGE 重复?
不要在 manifest.json 的 distribute.android.permissions 里再写一条带 maxSdkVersion 的 WRITE_EXTERNAL_STORAGE,与 Gallery 模块注入的权限冲突。存储权限交给 Gallery 即可。

收藏人数:
购买普通授权版(
试用
赞赏(0)
下载 11
赞赏 0
下载 12604355
赞赏 1949
赞赏
京公网安备:11010802035340号