# uni.shareWithSystem(options)

使用系统分享。

系统分享不同于SDK分享。不需要配置三方SDK的key信息。手机上安装的、可接受分享的应用都会出现在列表中。如需三方SDK分享请见插件市场

# shareWithSystem 兼容性

Web 微信小程序 Android iOS HarmonyOS HarmonyOS(Vapor)
x - 4.33 4.33 4.61 5.0

# 参数

名称 类型 必填 默认值 兼容性 描述
options ShareWithSystemOptions -
名称 类型 必备 默认值 兼容性 描述
type string -
分享类型,默认为text。
合法值 兼容性 描述
text
text类型
image
image类型
video
video类型
audio
audio类型
file
file类型
summary string -
分享的文字内容
href string -
分享链接
imageUrl string -
分享单个图片,仅支持本地路径
imagePaths Array<string> -
分享图片,仅支持本地路径
videoPaths Array<string> -
分享video,仅支持本地路径
audioPaths Array<string> -
分享audio,仅支持本地路径
filePaths Array<string> -
分享文件,仅支持本地路径
success (res: ShareWithSystemSuccess) => void -
uni.shareWithSystem成功回调函数定义
fail (res: ShareWithSystemFail) => void -
uni.shareWithSystem失败回调函数定义
complete (res: any) => void -
uni.shareWithSystem完成回调函数定义

# ShareWithSystemFail 的属性值

名称 类型 必备 默认值 兼容性 描述
errCode number -
错误码
合法值 兼容性 描述
1310600
取消分享
1310601
分享内容不可以为空
1310602
已经成功调用系统分享接口,系统分享出错
1310603
图片路径无效
1310604
无效的链接
1310605
video 路径无效
1310606
file 文件不存在
1310607
audio 路径无效
errSubject string -
统一错误主题(模块)名称
data any -
错误信息中包含的数据
cause Error -
源错误信息,可以包含多个错误,详见SourceError
errMsg string -

# 示例

示例为hello uni-app x alpha分支,与最新HBuilderX Alpha版同步。与最新正式版同步的master分支示例另见

该 API 不支持 Web,请运行 hello uni-app x 到 App 平台体验

扫码体验(手机浏览器跳转到App直达页)
<template>
	<!-- #ifdef APP -->
	<scroll-view direction="vertical" style="flex:1;">
	<!-- #endif -->
		<view id="viewshot">
			<button class="button" @click="shareText()">分享文本</button>
			<button class="button" @click="shareLink()">分享链接</button>
			<button class="button" @click="sharePrivateImg()">分享单个本地图片</button>
			<button class="button" @click="sharePrivateImgs()">分享多个本地图片</button>
			<button class="button" @click="shareAll()">分享链接、文本、一张图片</button>
			<button class="button" @click="sharePrivateVideo()">分享video文件(单个)</button>
			<button class="button" @click="sharePrivateVideos()">分享video文件(多个)</button>
			<button class="button" @click="sharePrivateAudio()">分享Audio文件(单个)</button>
			<button class="button" @click="sharePrivateAudios()">分享Audio文件(多个)</button>
			<button class="button" @click="sharePrivateFile()">分享文件(单个)</button>
			<button class="button" @click="sharePrivateFiles()">分享文件(多个)</button>
      <button class="button" @click="sharePubImg()">选择图片并分享</button>
      <button class="button" @click="sharePubMedias()">选择video并分享</button>
      <button class="button" @click="shareSnapShot()">指定view截图并分享</button>

			<button class="button" type="warn" @click="sharePrivateErrorImg()">分享单个本地图片(错误路径)</button>
			<button class="button" type="warn" @click="sharePrivateErrorImgs()">分享多个本地图片(含有错误路径)</button>
			<button class="button" type="warn" @click="sharePrivateErrorVideos()">分享Video文件(错误路径)</button>
			<button class="button" type="warn" @click="sharePrivateErrorAudios()">分享Audio文件(错误路径)</button>
			<button class="button" type="warn" @click="sharePrivateErrorFiles()">分享文件(错误路径)</button>


		</view>
	</scroll-view>
</template>

<script setup lang="uts">
	const summary = '欢迎使用hello uniapp-x'

	const sharePrivateErrorAudios = () => {
		uni.hideToast()
		const path1 : string = "/static/test-audio/ForElise.mp3";
		const path2 : string = "/static/test-audio/ForElise.mp32";

		uni.shareWithSystem({
			audioPaths: [path1, path2],
			type:'audio',
			success() {
				console.log('Shared----------------------------success')
			},
			fail(res) {
				console.log('Share failed, ' + "res.errCode =" + res.errCode + '---res.errMsg= ' + res.errMsg)
				uni.showToast({
					icon: "error",
					title: "errorCode=" + res.errCode
				})
			},
			complete(_) {

			}
		})
	}

	const sharePrivateErrorFiles = () => {
		uni.hideToast()
		const path1 : string = "/static/filemanager1/to.zip";
		const path2 : string = "/static/filemanager/11.txt.br";

		uni.shareWithSystem({
			filePaths: [path1, path2],
			type:'file',
			success(_) {
				console.log('Shared----------------------------success')
			},
			fail(res) {
				console.log('Share failed, ' + "res.errCode =" + res.errCode + '---res.errMsg= ' + res.errMsg)
				uni.showToast({
					icon: "error",
					title: "errorCode=" + res.errCode
				})
			},
			complete(_) {

			}
		})
	}

	const sharePrivateFile = () => {
		uni.hideToast()
		const path1 : string = "/static/filemanager/to.zip";

		uni.shareWithSystem({
			filePaths: [path1],
			type:'file',
			success(_) {
				console.log('Shared----------------------------success')
			},
			fail(res) {
				console.log('Share failed, ' + "res.errCode =" + res.errCode + '---res.errMsg= ' + res.errMsg)
				uni.showToast({
					icon: "error",
					title: "errorCode=" + res.errCode
				})
			},
			complete(_) {

			}
		})
	}

	const sharePrivateFiles = () => {
		uni.hideToast()
		const path1 : string = "/static/filemanager/to.zip";
		const path2 : string = "/static/filemanager/1.txt.br";

		uni.shareWithSystem({
			filePaths: [path1, path2],
			type:'file',
			success(_) {
				console.log('Shared----------------------------success')
			},
			fail(res) {
				console.log('Share failed, ' + "res.errCode =" + res.errCode + '---res.errMsg= ' + res.errMsg)
				uni.showToast({
					icon: "error",
					title: "errorCode=" + res.errCode
				})
			},
			complete(_) {

			}
		})
	}

	const sharePrivateAudio = () => {
		uni.hideToast()
		const path1 : string = "/static/test-audio/ForElise.mp3";

		uni.shareWithSystem({
			audioPaths: [path1],
			type:'audio',
			success(_) {
				console.log('Shared----------------------------success')
			},
			fail(res) {
				console.log('Share failed, ' + "res.errCode =" + res.errCode + '---res.errMsg= ' + res.errMsg)
				uni.showToast({
					icon: "error",
					title: "errorCode=" + res.errCode
				})
			},
			complete(_) {

			}
		})
	}

	const sharePrivateAudios = () => {
		uni.hideToast()
		const path1 : string = "/static/test-audio/ForElise.mp3";
		const path2 : string = "/static/test-audio/ForElise.mp3";

		uni.shareWithSystem({
			audioPaths: [path1, path2],
			type:'audio',
			success(_) {
				console.log('Shared----------------------------success')
			},
			fail(res) {
				console.log('Share failed, ' + "res.errCode =" + res.errCode + '---res.errMsg= ' + res.errMsg)
				uni.showToast({
					icon: "error",
					title: "errorCode=" + res.errCode
				})
			},
			complete(_) {

			}
		})
	}

	const sharePrivateErrorVideos = () => {
		uni.hideToast()
		const path1 : string = "/static/test-video/10second-demo.mp4";
		const path2 : string = "/static/test-video/10second-demo1.mp4";

		uni.shareWithSystem({
			videoPaths: [path1, path2],
			type:'video',
			success(_) {
				console.log('Shared----------------------------success')
			},
			fail(res) {
				console.log('Share failed, ' + "res.errCode =" + res.errCode + '---res.errMsg= ' + res.errMsg)
				uni.showToast({
					icon: "error",
					title: "errorCode=" + res.errCode
				})
			},
			complete(_) {

			}
		})
	}

	const sharePrivateVideo = () => {
		uni.hideToast()
		const path1 : string = "/static/test-video/10second-demo.mp4";
		uni.shareWithSystem({
			videoPaths: [path1],
			type:'video',
			success(_) {
				console.log('Shared----------------------------success')
			},
			fail(res) {
				console.log('Share failed, ' + "res.errCode =" + res.errCode + '---res.errMsg= ' + res.errMsg)
				uni.showToast({
					icon: "error",
					title: "errorCode=" + res.errCode
				})
			},
			complete(_) {

			}
		})
	}

	const sharePrivateVideos = () => {
		uni.hideToast()
		const path1 : string = "/static/test-video/10second-demo.mp4";
		const path2 : string = "/static/test-video/10second-demo.mp4";

		uni.shareWithSystem({
			videoPaths: [path1, path2],
			type:'video',
			success(_) {
				console.log('Shared----------------------------success')
			},
			fail(res) {
				console.log('Share failed, ' + "res.errCode =" + res.errCode + '---res.errMsg= ' + res.errMsg)
				uni.showToast({
					icon: "error",
					title: "errorCode=" + res.errCode
				})
			},
			complete(_) {

			}
		})
	}

	const sharePubMedias = () => {
		uni.hideToast()

		uni.chooseVideo({
			success(res) {
				uni.shareWithSystem({
					videoPaths: [res.tempFilePath],
					type:'video',
					success(_) {
						console.log('Shared----------------------------success')
					},
					fail(res) {
						console.log('Share failed, ' + "res.errCode =" + res.errCode + '---res.errMsg= ' + res.errMsg)
						uni.showToast({
							icon: "error",
							title: "errorCode=" + res.errCode
						})
					},
					complete(_) {

					}
				})
			}
		})
	}

	const shareText = () => {
		uni.hideToast()
		uni.shareWithSystem({
			summary: summary,
			type:'text',
			success(_) {
				console.log('Shared----------------------------success')
			},
			fail(res) {
				console.log('Share failed, ' + "res.errCode =" + res.errCode + '---res.errMsg= ' + res.errMsg)
				uni.showToast({
					icon: "error",
					title: "errorCode=" + res.errCode
				})
			},
			complete(_) {

			}
		})
	}

	const shareLink = () => {
		uni.hideToast()
		uni.shareWithSystem({
			type:'text',
			href: 'https://uniapp.dcloud.io',
			success(_) {
				console.log('Shared----------------------------success')
			},
			fail(res) {
				console.log('Share failed, ' + "res.errCode =" + res.errCode + '---res.errMsg= ' + res.errMsg)
				uni.showToast({
					icon: "error",
					title: "errorCode=" + res.errCode
				})
			},
			complete(_) {

			}
		})
	}

	const sharePrivateImg = () => {
		uni.hideToast()
		const imageSrc : string = "/static/test-image/logo.gif";
		uni.shareWithSystem({
			type:'image',
			imageUrl: imageSrc,
			success(_) {
				console.log('Shared----------------------------success')
				// 分享完成,请注意此时不一定是成功分享
			},
			fail(res) {
				console.log('Share failed, ' + "res.errCode =" + res.errCode + '---res.errMsg= ' + res.errMsg)
				uni.showToast({
					icon: "error",
					title: "errorCode=" + res.errCode
				})
				// 分享失败
			},
			complete(_) {

			}
		})
	}

	const sharePrivateErrorImg = () => {
		uni.hideToast()
		const imageSrc : string = "/static/test-image/logo.jpg11";
		uni.shareWithSystem({
			imageUrl: imageSrc,
			type:'image',
			success(_) {
				console.log('Shared----------------------------success')
				// 分享完成,请注意此时不一定是成功分享
			},
			fail(res) {
				console.log('Share failed, ' + "res.errCode =" + res.errCode + '---res.errMsg= ' + res.errMsg)
				uni.showToast({
					icon: "error",
					title: "errorCode=" + res.errCode
				})
				// 分享失败
			},
			complete(_) {

			}
		})
	}

	const sharePrivateImgs = () => {
		uni.hideToast()
		const errorImageSrc1 : string = "/static/test-image/logo.gif";
		const errorImageSrc2 : string = "/static/test-image/logo.png";
		const imageSrc : string = "/static/test-image/logo.jpg";
		let imageUrlList : string[] = new Array()
		imageUrlList.push(errorImageSrc2)
		imageUrlList.push(imageSrc)
		// imageUrlList.push(errorImageSrc1)

		uni.shareWithSystem({
			imagePaths: imageUrlList,
			type:'image',
			success(_) {
				console.log('Shared----------------------------success')
				// 分享完成,请注意此时不一定是成功分享
			},
			fail(res) {
				console.log('Share failed, ' + "res.errCode =" + res.errCode + '---res.errMsg= ' + res.errMsg)
				uni.showToast({
					icon: "error",
					title: "errorCode=" + res.errCode
				})
			},
			complete(_) {

			}
		})
	}

	const sharePrivateErrorImgs = () => {
		uni.hideToast()
		const errorImageSrc1 : string = "/static/test-image/logo.jpg1";
		const errorImageSrc2 : string = "/static/test-image/logo.jpg3";
		const imageSrc : string = "/static/test-image/logo.jpg";
		let imageUrlList : string[] =new Array()
		imageUrlList.push(imageSrc)
		imageUrlList.push(errorImageSrc1)
		imageUrlList.push(errorImageSrc2)
		uni.shareWithSystem({
			imagePaths: imageUrlList,
			type:'image',
			success(_) {
				console.log('Shared----------------------------success')
				// 分享完成,请注意此时不一定是成功分享
			},
			fail(res) {
				console.log('Share failed, ' + "res.errCode =" + res.errCode + '---res.errMsg= ' + res.errMsg)
				uni.showToast({
					icon: "error",
					title: "errorCode=" + res.errCode
				})
			},
			complete(_) {

			}
		})
	}

	const shareAll = () => {
		uni.hideToast()
		const imageSrc : string = "/static/test-video/fast-forward.png";
		let imageUrlList : string[] = new Array()
		imageUrlList.push(imageSrc)
		uni.shareWithSystem({
			summary: summary,
			href: 'https://uniapp.dcloud.io',
			imagePaths: imageUrlList,
			type:'image',
			success(_) {
				console.log('Shared----------------------------success')
				// 分享完成,请注意此时不一定是成功分享
			},
			fail(res) {
				console.log('Share failed, ' + "res.errCode =" + res.errCode + '---res.errMsg= ' + res.errMsg)
				uni.showToast({
					icon: "error",
					title: "errorCode=" + res.errCode
				})
			},
			complete(_) {

			}
		})
	}

	const sharePubImg = () => {
		uni.hideToast()
		uni.chooseImage({
			count: 3,
			sourceType: ['camera', 'album'],
			success(e) {
				console.log(e)
				console.log(JSON.stringify(e))
				uni.shareWithSystem({
					// summary: "aa",
					// href: 'https://uniapp.dcloud.io',
					imagePaths: e.tempFilePaths,
					type:'image',
					success(_) {
						console.log('Shared----------------------------success')
						// 分享完成,请注意此时不一定是成功分享
					},
					fail(res) {
						console.log('Share failed, ' + "res.errCode =" + res.errCode + '---res.errMsg= ' + res.errMsg)

						uni.showToast({
							icon: "error",
							title: "errorCode=" + res.errCode
						})
					},
					complete(_) {

					}
				})
			}
		})
	}

	const shareSnapShot = () => {
		uni.hideToast()
		uni.getElementById("viewshot")?.takeSnapshot(
			{
				success: function (res) {
					uni.shareWithSystem({
						imageUrl: res.tempFilePath,
						type:'image',
						success(_) {
							console.log('Shared----------------------------success')
							// 分享完成,请注意此时不一定是成功分享
						},
						fail(res) {
							console.log('Share failed, ' + "res.errCode =" + res.errCode + '---res.errMsg= ' + res.errMsg)

							uni.showToast({
								icon: "error",
								title: "errorCode=" + res.errCode
							})
						},
						complete(_) {

						}
					})

				},
				fail: function (res) {
					console.log(res)
					uni.showToast({
						icon: 'error',
						title: '截图失败'
					})
				}
			}
		)
	}

</script>

<style>
	.button {
		margin-left: 30px;
		margin-right: 30px;
		margin-bottom: 15px;
	}
</style>

# 参见

# 通用类型

# GeneralCallbackResult

名称 类型 必备 默认值 兼容性 描述
errMsg string -
错误信息

# 注意

系统分享和微信SDK分享在Android上有些差异

  1. 系统分享单张图片可以进朋友圈,多张图片进朋友圈只能使用微信SDK。
  2. Android的系统分享,分享链接到微信只能以文本方式分享,如需方条链接需使用微信SDK。iOS的系统分享可以分享方条链接。
  3. Android的系统分享同时分享链接和图片到微信最终只能分享图片。而iOS的系统分享同时分享链接和图片,会把图片作为链接的题图。 插件市场有微信分享插件。