接入文档 微信开放文档 (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都没问题,还以为与手机版本没关系,结果确是有关系,感觉任何时候都不能忽略版本兼容带来得疑难杂症啊