老套路咱们先看效果图:
可以先看下官方文档介绍:微信官方文档APP打开小程序链接
我这边打开了,上面奔溃是因为模拟器不兼容的原因:
主要讲解下打开小程序核心代码:
// 填应用AppId
String appId = "移动APP的APPID";
IWXAPI api = WXAPIFactory.createWXAPI(this, appId);
WXLaunchMiniProgram.Req req = new WXLaunchMiniProgram.Req();
// 填小程序原始id
req.userName = "小程序的id";
//拉起小程序页面的可带参路径,不填默认拉起小程序首页
// req.path = "拉起小程序页面的可带参路径";
// 可选打开 开发版,体验版和正式版
req.miniprogramType = WXLaunchMiniProgram.Req.MINIPROGRAM_TYPE_PREVIEW;
api.sendReq(req);
下面是小程序回调的方法
@Override
public void onResp(BaseResp resp) {
if (resp.getType() == ConstantsAPI.COMMAND_LAUNCH_WX_MINIPROGRAM) {
WXLaunchMiniProgram.Resp launchMiniProResp = (WXLaunchMiniProgram.Resp) resp;
//对应小程序组件 <button open-type="launchApp"> 中的 app-parameter 属性
String extraData = launchMiniProResp.extMsg;
}
}
咱们来说下唤起小程序的步骤:
第一步:先在微信开放平台创建应用:打开微信开放平台
创建应用后再应用详情里面配置android端的签名和包名信息(包名一定要是打开小程序的APP所在的包名)
获取APP签名信息可查看我上一篇文章:APP签名获取
第二步:绑定要唤起的小程序
第三步:拿小程序的原始id和上面创建应用的AppId
然后在你要唤起小程序的APP里面添加唤起微信小程序的包:
implementation 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:5.3.1'
然后在唤起APP的方法里面加入唤起微信小程序以及传参数的代码:如下
参考的微信官方论坛:APP打开小程序传递参数的方法
String appId = "移动APPAPPID";
IWXAPI api = WXAPIFactory.createWXAPI(this, appId);
WXLaunchMiniProgram.Req req = new WXLaunchMiniProgram.Req();
// 填小程序原始id
req.userName = "小程序id";
// 拉起小程序页面的可带参路径,不填默认拉起小程序首页
//req.path = "拉起小程序页面的可带参路径";
// 问号后面的memberId=1&mobile=13711111111就是参数
req.path = "pages/productSort/productSort?memberId=1&mobile=13711111111";
// 可选打开 开发版,体验版和正式版
req.miniprogramType = WXLaunchMiniProgram.Req.MINIPROGRAM_TYPE_PREVIEW;
api.sendReq(req);
然后看下小程序的回调方法(前提是小程序写了回调方法给APP)
@Override
public void onResp(BaseResp resp) {
if (resp.getType() == ConstantsAPI.COMMAND_LAUNCH_WX_MINIPROGRAM) {
WXLaunchMiniProgram.Resp launchMiniProResp = (WXLaunchMiniProgram.Resp) resp;
//对应小程序组件 <button open-type="launchApp"> 中的 app-parameter 属性
String extraData = launchMiniProResp.extMsg;
}
}
说下坑:如下图
原因:因为用的是体验版,所登的微信账号无体验权限。 解决方案:管理员给该账户体验权限,用该小程序有体验权限的账号测试
跳转小程序失败:如下图
我这边也遇到了,我出现的原因是因为我的APPID填写错了,应该填写创建移动应用的APPid而不是小程序的APPID
源码下载:GitHub地址