老套路咱们先看效果图:

android 唤醒后台进程 安卓唤醒app的代码_打开小程序

 

可以先看下官方文档介绍:微信官方文档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);

android 唤醒后台进程 安卓唤醒app的代码_APP打开小程序_02

下面是小程序回调的方法

@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打开小程序_03

 

创建应用后再应用详情里面配置android端的签名和包名信息(包名一定要是打开小程序的APP所在的包名)

获取APP签名信息可查看我上一篇文章:APP签名获取

android 唤醒后台进程 安卓唤醒app的代码_打开小程序_04

第二步:绑定要唤起的小程序

android 唤醒后台进程 安卓唤醒app的代码_唤起小程序_05

android 唤醒后台进程 安卓唤醒app的代码_android 唤醒后台进程_06

第三步:拿小程序的原始id和上面创建应用的AppId

android 唤醒后台进程 安卓唤醒app的代码_唤起小程序_07

然后在你要唤起小程序的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;
        }
}

说下坑:如下图

android 唤醒后台进程 安卓唤醒app的代码_android 唤醒后台进程_08

原因:因为用的是体验版,所登的微信账号无体验权限。 解决方案:管理员给该账户体验权限,用该小程序有体验权限的账号测试

 

跳转小程序失败:如下图

android 唤醒后台进程 安卓唤醒app的代码_android打开小程序_09

我这边也遇到了,我出现的原因是因为我的APPID填写错了,应该填写创建移动应用的APPid而不是小程序的APPID

源码下载:GitHub地址

再次感谢网友提供经验:网友经验1 网友经验2