uni-app Android 11系统 微信分享图片失败
uni-app Android 11系统 微信分享图片失败
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Mac | macOS Big Sur 11.1 | HBuilderX |
操作步骤:
复现可通过hello uni官方demo运行到安卓11系统手机, tabbar->接口->分享,都测试一遍就知道了,微信版本号8.0.1
预期结果:
成功分享图片给好友或者朋友圈
实际结果:
均失败,分享到好友提示分享成功,好友没收到任何消息,根本跳转不过去朋友圈
bug描述:
安卓11系统微信如果只分享图片分享失败:
- 分享到微信好友,点击发送后,显示发送成功,实际上没有发出去
- 分享到朋友圈不成功,会跳转到微信但是很快就黑屏然后退出微信
- 如果是分享图文链接或者只是文字可以成功
更多关于uni-app Android 11系统 微信分享图片失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这个问题你们有注意到就行,我等下次版本在一起更新,3.1.4.20210303-alpha,现在项目已经上线,不敢切换到alpha,我等下次更新
在 Android 11 系统中,微信分享图片失败是由于系统权限策略变更导致的。Android 11 引入了分区存储(Scoped Storage)机制,限制了应用对公共目录的直接访问。uni-app 的分享功能在传递图片路径时,如果路径指向外部存储(如 file://
开头的 URI),微信可能无法正确读取图片文件,从而造成分享失败。
解决方案:
-
使用
uni.shareWithSystem
方法:通过系统原生分享组件传递图片,避免直接调用微信 SDK。这可以绕过微信的路径限制,但体验可能不如直接分享。 -
将图片转换为 Base64 或 Blob:通过
uni.getFileSystemManager().readFile
读取图片文件为 Base64 或临时 Blob URL,再通过uni.share
传递。示例代码:uni.getFileSystemManager().readFile({ filePath: 'your_image_path', encoding: 'base64', success: (res) => { uni.share({ provider: 'weixin', type: 2, image: 'data:image/jpeg;base64,' + res.data, success: () => {} }); } });