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系统微信如果只分享图片分享失败:

  1. 分享到微信好友,点击发送后,显示发送成功,实际上没有发出去
  2. 分享到朋友圈不成功,会跳转到微信但是很快就黑屏然后退出微信
  3. 如果是分享图文链接或者只是文字可以成功

更多关于uni-app Android 11系统 微信分享图片失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

HX3.1.4试下

更多关于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),微信可能无法正确读取图片文件,从而造成分享失败。

解决方案:

  1. 使用 uni.shareWithSystem 方法:通过系统原生分享组件传递图片,避免直接调用微信 SDK。这可以绕过微信的路径限制,但体验可能不如直接分享。

  2. 将图片转换为 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: () => {}
        });
      }
    });
回到顶部