Android App跳转微信小程序踩坑实战

最近,有一个App跳转小程序的需求,参考微信的官方文档,接入还是比较简单的,不过中途遇到了一个坑,所以记录一下。

首先,需要登录微信开放平台 微信开放平台,创建一个移动应用,然后系统会返回一个appid。

需要说明的是,不管是跳转微信小程序还是微信登录、分享,都需要先在微信开放平台注册appId。然后,就可以参考 Android APP拉取小程序的例子,在WebView中调用下面的代码(可以是直接调用,也可以是协议拦截)。

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);

需要重点提醒的是,上面appId是前面我们注册的移动应用的appId,而不是小程序的appId。在刚开始接入的时候,就遇到了一个坑,“bad param”的错误。如果遇到“bad param”的错误,那多半是appId的问题。

userName则是小程序原始id,可以打开小程序,然后查看更多资料进行查看,比如:

如果需要回掉结果,还需要在WXEntryActivity中重写onResp方法。

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 属性
    }
}

当然,为了代码逻辑的健壮性,还需要在打开微信小程序之前,判断是否安装了微信客户端。

public  static boolean isWxAppInstalled(Context context) {
        IWXAPI wxApi = WXAPIFactory.createWXAPI(context, null);
        wxApi.registerApp(WChatConstants.APP_ID);
        boolean bIsWXAppInstalled = false;
        bIsWXAppInstalled = wxApi.isWXAppInstalled();
        if(!bIsWXAppInstalled){
            Toast.makeText(context,"请先安装微信",Toast.LENGTH_SHORT).show();
        }
        return bIsWXAppInstalled;
    }

总结

到此这篇关于Android App跳转微信小程序踩坑的文章就介绍到这了,更多相关Android App跳转小程序内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Android开发微信小程序路由跳转方式

    目录 官方文档 路由跳转的两种形式 标签形式 js形式 快速总结 小程序路由跳转 1.1 wx.switchTab(Object object) 1.2 wx.reLaunch(Object object) 1.3 wx.redirectTo(Object object) 1.4 wx.navigateTo(Object object) 1.5 wx.redirectTo与wx.navigateTo的区别 1.6 wx.navigateBack(Object object) 官方文档 https

  • Android App跳转微信小程序踩坑实战

    最近,有一个App跳转小程序的需求,参考微信的官方文档,接入还是比较简单的,不过中途遇到了一个坑,所以记录一下. 首先,需要登录微信开放平台 微信开放平台,创建一个移动应用,然后系统会返回一个appid. 需要说明的是,不管是跳转微信小程序还是微信登录.分享,都需要先在微信开放平台注册appId.然后,就可以参考 Android APP拉取小程序的例子,在WebView中调用下面的代码(可以是直接调用,也可以是协议拦截). String appId = "wxd930ea5d5a258f4f&q

  • 微信小程序踩坑记录之解决tabBar.list[3].selectedIconPath大小超过40kb

    发现问题 重新启动微信小程序编辑器的时候遇到了这样的一个问题: tabBar.list[3].selectedIconPath 大小超过 40kb 微信小程序开发的过程之中总会出现这样或者那样的错误,需要我们耐心的去寻找,仔细查看和百度查询之后,发现了原因:其中有一张图片,替换的时候没有注意图片大小,导致项目无法预览. 解决方法 参考了一下微信小程序的官方API,查看tabBar list定义说明:也就是说选中时的图片路径,icon 大小限制为40kb,建议尺寸为 81px * 81px,而我新

  • 微信小程序排坑指南详解

    本文为大家分享了微信小程序排坑指南,供大家参考,具体内容如下 no.1 背景图不显示 微信小程序里面是允许用户自定义背景图的,但是限定了背景图的路径及地址,之前一直用相对路径来写,微信开发者工具中也显示出了背景图,误以为没有问题,但是预览的时候发现手机中不显示背景图,这就是今天介绍的第一个坑,背景图不允许为本地图片. 解决方法: 第一.用在线图片转base64码的方法,这种方法的优点在于图片不存储在本地或者服务器上,占用空间小修改方便,缺点是小图片处理效果更好,大图代码相当的长,长的都不想看他.

  • mpvue开发音频类小程序踩坑和建议详解

    这是我第一次开发小程序,开发的产品是音频类的,在大佬的建议下采用了 mpvue ,一周时间把功能都做出来,由于不太熟悉mpvue和微信小程序,足足用了一周时间来改bug才出来一个能用的版本,在这里整理分享下我开发时遇到的一些问题和给出一些建议. 在 Linux 上开发小程序 在公司电脑装了双系统,日常用的是 Ubuntu 系统,Linux或Mac的开发环境对前端相对来说会友好一些.微信小程序官方的开发者工具只有 Windows 和 Mac 版本,所以这就尴尬了. 不过还好,发现已经有大神在Git

  • 利用uni-app生成微信小程序的踩坑记录

    目录 前言 1.不允许id选择器 2.默认竖排 3.图片加载不出来 4.eval函数不可用 5.getStorage异步 6.props的中的值不可修改 7.wx.uploadFile携带字符串参数 8.picker的multiSelector mode中选择框出现undefined 总结 前言 毕设要求写一个浏览器端,一个APP端,一个微信端,刚开始以为要学三个技术然后写三个客户端,后来知道了uni-app这个神器,一次编写就可以编译生成APP.H5以及各种小程序版本的客户端.然而我比较熟悉的

  • 微信小程序实现页面跳转传值以及获取值的方法分析

    本文实例讲述了微信小程序实现页面跳转传值以及获取值的方法.分享给大家供大家参考,具体如下: 在安卓中页面跳转传值都是通过bundle,现在研究一下小程序的列表跳转及页面传值. my.wxml <view class="container"> <view bindtap="bindViewTap" class="userinfo"> <image class="userinfo-avatar" sr

  • 微信小程序开发之你可能没有踩过的神坑总结

    目录 getApp() 在页面入口文件顶部定义变量 你不知道的 wx.createSelectorQuery() and wx.createIntersectionObserver(); 总结 getApp() getApp() 函数是用来获取 app 实例的函数,一般情况下没啥问题,但是在几个特殊的场景下它会给你带来意想不到的 bug. 在 app.js 中的 onLaunch 回调函数中使用 // app.js App({ onLaunch() { console.info(getApp()

  • 微信小程序常用功能实例汇总包括上拉刷新,下拉加载,列表数据绑定,轮播,参数传递

    微信小程序 getApp() 方法 小程序提供了全局的 getApp() 方法,可获取当前小程序实例,一般用于在子页面中获取顶层应用. // app.js App({ globalData: 1 }); // page.js var app = getApp(); console.log(app.globalData); // 获取 globalData 一 整体结构 图片目录(images).页面目录(pages).公共脚本(utils).全局配置(app.json.project.confi

  • 微信小程序后台解密用户数据实例详解

     微信小程序后台解密用户数据实例详解 微信小程序API文档:https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html openId : 用户在当前小程序的唯一标识 因为最近根据API调用https://api.weixin.qq.com/sns/jscode2session所以需要配置以下服务,但是官方是不赞成这种做法的, 而且最近把在服务器配置的方法给关闭了.也就是说要获取用户openid,地区等信息只能在后台获取. 一下是官方的

  • java 微信小程序code获取openid的操作

    最近有个小程序的项目 需要前端传code 后端获取openid 这里是纯后端 在这里记录一下吧 主要代码: 这里是获取openid的实现类 import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.moszk.frame.basic.utils.HttpRequest; import org.springframework.web.bind.annotation.RequestMapp

随机推荐