uni-app android11 调起微信分享发送图片给好友,分享到朋友圈显示发送成功,实际图片没有发送

uni-app android11 调起微信分享发送图片给好友,分享到朋友圈显示发送成功,实际图片没有发送

开发环境 版本号 项目创建方式
Windows Windows 10 教育版 HBuilderX
Android Android 11

产品分类:uniapp/App

PC开发环境操作系统:Windows

HBuilderX类型:正式

HBuilderX版本号:3.1.9

手机系统:Android

手机系统版本号:Android 11

手机厂商:小米

手机机型:小米11

页面类型:vue

打包方式:云端

示例代码:

uni.share({  
    provider: "weixin",  
    scene: "WXSenceTimeline",  
    type: 2,  
    imageUrl: that.posterImg,  
    success: function(res) {  
        uni.showToast({  
            title: '分享成功',  
            icon: 'none'  
        })  
    },  
    fail: function(err) {  
        console.log("fail:" + JSON.stringify(err));  
    }  
});  

uni.share({  
    provider: "weixin",  
    scene: "WXSceneSession",  
    type: 2,  
    imageUrl: that.posterImg,  
    success: function(res) {  
        uni.showToast({  
            title: '分享成功',  
            icon: 'none'  
        })  
    },  
    fail: function(err) {  
        console.log("fail:" + JSON.stringify(err));  
    }  
});  

操作步骤:

uni.share({  
    provider: "weixin",  
    scene: "WXSenceTimeline",  
    type: 2,  
    imageUrl: that.posterImg,  
    success: function(res) {  
        uni.showToast({  
            title: '分享成功',  
            icon: 'none'  
        })  
    },  
    fail: function(err) {  
        console.log("fail:" + JSON.stringify(err));  
    }  
});  

uni.share({  
    provider: "weixin",  
    scene: "WXSceneSession",  
    type: 2,  
    imageUrl: that.posterImg,  
    success: function(res) {  
        uni.showToast({  
            title: '分享成功',  
            icon: 'none'  
        })  
    },  
    fail: function(err) {  
        console.log("fail:" + JSON.stringify(err));  
    }  
});  

预期结果:

  • 成功分享图片

实际结果:

  • 显示分享成功,可是图片并没有发出

bug描述:

  • 分享朋友圈或者好友,回调显示发送成功,实际并没有发送出去,在 android 其他OS都可以,就是在 android11不行

更多关于uni-app android11 调起微信分享发送图片给好友,分享到朋友圈显示发送成功,实际图片没有发送的实战教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复

图片地址是什么 HX3.1.4 Android平台 修复 微信分享本地图片在部分 Android11 设备可能失败的Bug

更多关于uni-app android11 调起微信分享发送图片给好友,分享到朋友圈显示发送成功,实际图片没有发送的实战教程也可以访问 https://www.itying.com/category-93-b0.html


图片地址:_doc/uniapp_temp_1619162684693/canvas/16191627116910.png 这是通过canvas生成的图片

解决办法

var p = plus.io.convertLocalFileSystemURL(that.posterImg); let PImg = ‘file:///’+p;

回复 1***@qq.com: 你的意思是说 "_doc/xxx"写法的图片不生效? 需要转绝对路径?我们试下

回复 DCloud_Android_ST: 对

这个问题是Android 11文件权限策略变更导致的。Android 11引入了分区存储机制,应用无法直接访问其他应用的文件路径。

问题分析:

  1. that.posterImg如果是本地文件路径,在Android 11上微信无法读取
  2. 云端打包时文件路径可能不符合Android 11的存储要求
  3. 回调成功仅表示调起微信成功,不代表微信实际处理成功

解决方案:

方案一:使用base64分享

uni.downloadFile({
    url: that.posterImg,
    success: (res) => {
        uni.getFileSystemManager().readFile({
            filePath: res.tempFilePath,
            encoding: 'base64',
            success: (result) => {
                uni.share({
                    provider: "weixin",
                    scene: "WXSenceTimeline",
                    type: 2,
                    imageUrl: 'data:image/jpeg;base64,' + result.data,
                    success: function(res) {
                        uni.showToast({
                            title: '分享成功',
                            icon: 'none'
                        })
                    }
                });
            }
        });
    }
});

方案二:使用临时文件路径 确保that.posterImg是应用可访问的临时文件路径:

// 如果是网络图片,先下载到临时目录
uni.downloadFile({
    url: 'https://example.com/image.jpg',
    success: (res) => {
        that.posterImg = res.tempFilePath;
        // 然后执行分享
    }
});

方案三:检查文件路径权限 在manifest.json中配置Android权限:

{
    "app-plus": {
        "distribute": {
            "android": {
                "permissions": [
                    "<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>",
                    "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>"
                ]
            }
        }
    }
}
回到顶部