记录一次接入Android跳入微信小程序遇到问题

博客讲述了在Android 11上遇到调用微信SDK启动小程序失败的问题,原因是Android 11的软件包可见性和强制执行分区存储变更。解决方案包括在AndroidManifest.xml中添加<queries>标签并升级编译工具。适配后,问题得到解决,强调了版本兼容性在处理第三方SDK问题中的重要性。
摘要由CSDN通过智能技术生成

接入文档  微信开放文档 (qq.com)

dependencies {
    api 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
}

调用接口:

String appId = "wxd930ea5d5a258f4f"; // 填移动应用(App)的 AppId,非小程序的 AppID
IWXAPI api = WXAPIFactory.createWXAPI(context, appId);

WXLaunchMiniProgram.Req req = new WXLaunchMiniProgram.Req();
req.userName = "gh_d43f693ca31f"; // 填小程序原始id
req.path = path;                  拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。
req.miniprogramType = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE;// 可选打开 开发版,体验版和正式版
api.sendReq(req);

在WXEntryActivity中添加回调:

public void onResp(BaseResp resp) {
    if (resp.getType() == ConstantsAPI.COMMAND_LAUNCH_WX_MINIPROGRAM) {
        WXLaunchMiniProgram.Resp launchMiniProResp = (WXLaunchMiniProgram.Resp) resp;
        String extraData =launchMiniProResp.extMsg; //对应小程序组件 <button open-type="launchApp"> 中的 app-parameter 属性
    }
}

接入微信就那么多东西,该加的都加了,结果不能调起微信,还是一点反应没有,开放平台上的签名和包名检查了一遍又一遍,也没问题,换个签名文件也不行,重新接也不行,最后看了源码debu报的是“sendReq failed for wechat app signature check failed”,网上一查,开放平台有个回复是Android11兼容性问题,链接是微信开放平台,原来上面说是为了Android 11 版本为加强用户隐私保护引入较多变更,第三方应用需要适配的有两个变更:

1.软件包可见性变更,会导致第三方应用通过 OpenSDK 接口拉起微信受限,从而影响分享消息到微信、拉起小程序等功能的正常使用(该变更只对升级targetSdkVersion=30 的应用产生影响)。

2.强制执行分区存储:该变更会影响第三方应用分享包含文件路径的消息(如图片类型消息),无论第三方应用targetSdkVersion是否升级为30,均需要进行适配。

为避免未及时适配带来的使用问题,请开发者尽快适配。

1. 软件可见性适配方案

1.1 根据 Android 官方给出的适配方案,在主工程的AndroidManifest.xml 中增加 标签,即可解决以上影响,代码如下:

<manifest package="com.example.app">

      ...

      // 在应用的AndroidManifest.xml添加如下<queries>标签
    <queries>
        <package android:name="com.tencent.mm" />   // 指定微信包名
    </queries>

      ...

</manifest>

1.2 添加以上标签之后,需要开发者升级编译工具,否则会出现编译错误。

1)Android Studio 需要升级至 3.3 及以上,建议升级至 4.0 及以上版本;

2)Android SDK Build-Tools 需要升级至 30 及以上版本;

3)com.android.tools.build:gradle 需要升级至 3.6.0 版本,建议升级至最新的 3.6.4 版本。

按照上面添加后,果然成功,感觉遇到第三方sdk问题还是得扒官方社区和公告,看官方demo都没问题,还以为与手机版本没关系,结果确是有关系,感觉任何时候都不能忽略版本兼容带来得疑难杂症啊

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值