三方App实现和微信小程序交互
近期因需求需要再次集成微信SDK,在实现app拉起程序的工程中是很顺利的,实现小程序唤醒app时着实被微信光放的文档坑了一把(想必很多人都很头疼微信的开发文档),最后【被迫】下载了demo看了其实现才搞定小程序唤醒app。下面开始记录一下本次的实现过程:
第三方移动应用拉起电子营业执照小程序,请参考微信开发平台-资源中心-移动应用-移动应用拉起小程序功能,具体详情请查看:https://open.weixin.qq.com/cgi-bin/showdocument? action=dir_list&t=resource/res_list&verify=1&lang=zh_CN
调起微信小程序/打开微信的操作很简单,官方代码示例:
Android开发示例
开发前需下载Android开发工具包(SDK),可在“资源中心-开发资源-资源下载-Android资源下载”按照指引操作。
调用接口:WXLaunchMiniProgram
移动应用跳转到小程序示例:
String appId = "wxd930ea5d5a258f4f"; // 填应用AppId
IWXAPI api = WXAPIFactory.createWXAPI(context, appId);
WXLaunchMiniProgram.Req req = new WXLaunchMiniProgram.Req();
req.userName = "gh_d43f693ca31f"; // 填小程序原始id
req.path = path; //拉起小程序页面的可带参路径,不填默认拉起小程序首页
req.miniprogramType = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE;// 可选打开 开发版,体验版和正式版
api.sendReq(req);
回调代码官方文档很坑,下面是我项目中的实现:
public class WXEntryActivity extends Activity implements IWXAPIEventHandler {private static String TAG = "MicroMsg.WXEntryActivity";private IWXAPI api;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);api = WXAPIFactory.createWXAPI(this, "wxd930ea5d5a258f4f", false);try {Intent intent = getIntent();api.handleIntent(intent, this);} catch (Exception e) {e.printStackTrace();}}@Overrideprotected void onNewIntent(Intent intent) {super.onNewIntent(intent);setIntent(intent);api.handleIntent(intent, this);}@Overridepublic void onReq(BaseReq baseReq) {}@Overridepublic void onResp(BaseResp resp) {String extraData = null;int type = resp.getType();if (type == ConstantsAPI.COMMAND_LAUNCH_WX_MINIPROGRAM) {WXLaunchMiniProgram.Resp launchMiniProResp = (WXLaunchMiniProgram.Resp) resp;extraData = launchMiniProResp.extMsg; //对应小程序组件 <button open-type="launchApp"> 中的 app-parameter 属性}
//使用EventBus是因为小程序唤醒app时会回传一些app进入小程序特定功能的操作结果,方便处理回到app后的一系列动作EventBus.getDefault().post(extraData); // Log.i("extraData", extraData); // Toast.makeText(this, extraData + ", type=" + resp.getType(), Toast.LENGTH_SHORT).show();Intent intent = new Intent(this, MainActivity.class);startActivity(intent);finish();}}
AndroidManifest:<activityandroid:name=".wxapi.WXEntryActivity"android:exported="true"android:label="@string/app_name"android:launchMode="singleTask"android:taskAffinity="net.sourceforge.simcpux"android:theme="@android:style/Theme.Translucent.NoTitleBar"> </activity>
为什么不使用intent传输数据?
答案是如果intent的目的activity的启动模式是默认的(standard)那么进入小程序之前的数据将会被回收,因为activity被重新创建了,如果是启动模式是singleTask时,activity的生命周期是onCreat()-onStart()-onResume()-onPause()-onStop()-onRestart()-onStart()-onResume()
所以不能在onCreat()中获取intent,但是在onResume中也无法获取到使用bundle传输也不行。
如何解决:
方法一:使用EventBus,使用方法略;
方法二:在intent目标activity中添加代码:
protected void onNewIntent(Intent intent) {super.onNewIntent(intent);setIntent(intent); }
over..!!!
三方App实现和微信小程序交互相关推荐
- dakai微信小程序 ios_iOS APP拉起微信小程序
背景:由于公司业务需求,我们公司自己开发了一个微信小程序,然后通过App拉起微信小程序进行交互,有一些功能也可以放在小程序中去实现! 准备:首先你在微信的开放平台创建应用,并通过审核,就是你的App具 ...
- APP跳转微信小程序,跳转微信公众号
一.判断手机是否安装了微信的工具类: //判断手机是否安装了某些程序的工具类 public class IsInstallUtils {//判断是否安装了微信public static boolean ...
- 微信小程序交互性能优化利器WXS的使用(一)
微信小程序交互性能优化利器WXS的使用 WXS简介 WXS原理 注意事项(划重点) WXS的使用 引入WXS WXS的响应事件(重要) 开始食用WXS 封装视图层WXML实用小方法 WXS简介 WXS ...
- uniapp App跳转微信小程序并互相传递参数、接收微信小程序传递的参数
本文是uniapp打包成安卓App. 一.注意事项 1.用到了分享功能,在打包App时,需要配置manifest.json:App 模块配置->Share.按照提示填写微信分享的信息,appid ...
- APP 跳转微信小程序和回调
在同一开放平台账号下的移动应用及小程序无需关联即可完成跳转,非同一开放平台账号下的小程序需与移动应用(APP)成功关联后才支持跳转. 可在"管理中心-移动应用-应用详情-关联小程序信息&qu ...
- Android APP跳转微信小程序和APP跳转支付宝小程序传参
Android APP跳转微信小程序和APP跳转支付宝小程序传参 微信开放文档链接 MINIPROGRAM_TYPE_PREVIEW:体验版. MINIPROGRAM_TYPE_TEST:开发版 MI ...
- 如何用Python快速实现一个垃圾分类APP【附带微信小程序】
嗨害大家好鸭!我是小熊猫❤ 今天这篇文章主要介绍的是: 如何利用现有的工具来实现一个垃圾分类的应用 有什么python相关报错解答自己不会的.或者源码资料/模块安装/女装大佬精通技巧 都可以来这里:( ...
- uni-app app 跳转 微信小程序(安卓/ios)
uni-app app 跳转 微信小程序(安卓/ios) 近日接到需求,需要实现在 app 中直接跳转到微信小程序中,其实非常简单,uni-app 都已经集成好了. 安卓和ios 有点区别,这个需要注 ...
- 一图了解App跳转微信小程序关注公众号,推送消息
一图了解App跳转微信小程序关注公众号,推送消息:
最新文章
- python切片语法-Python切片符号(:)用法及示例
- 神策数据薛创宇:数据分析与场景实践之“坑位运营”
- CGRect vs CGPoint vs CGSize
- 无法打开Win11系统小组件怎么办
- 【技巧】搜狗输入法特殊技巧
- gzip压缩文件解压文件(gz文件)
- 有关凸集的证明例题_第1章引言题解1. 用定义验证下列各集合是凸集: (1) S={(X1 ......
- python线程暂停_在python中暂停一个线程和另一个线程
- 刷新后保持大分类和小分类的展开状态
- 理解图像处理中的 双线性内插法(图文说明)
- 计算机博士自白:毕业放弃学术去企业,从天之骄子坠落成天生白痴
- 2022-7-6-18
- exlc表格怎么换行_excel表格怎么换行_excel表格怎么换行上下换行
- intel 显卡 opencl安装
- linux权限管理详解
- 帆船运动-第13届蓝桥杯Scratch省赛真题第2题
- OpenVINO工具套件高级课程第一课:如何充分使用OpenVINO工具套件?
- 技术所带来的生产率提升,将会大大提高资本要素回报率
- 小程序报错:Failed to load local image resource /pages/goods/NaN加载资源失败问题解决
- 程序设计与算法3-5:求前n项和
热门文章
- 芯片行业模式优缺点及巨头代表梳理
- [软考]净现值NPV详细解释及应用,实例讲解收集(信息系统项目管理师-立项管理)...
- Navigating to current location (/) is not allowed
- 3d wallpaper android,3D Parallax Wallpaper
- 浏览安全怎么提升?教你设置安全浏览器信任站点
- Matlab播放音频文件(音乐)!
- 最近朋友民间借贷起诉,聊天记录内容过多,聊天长截图需要处理成A4纸上,方便打印
- CentOS 7安装LMD杀毒软件
- Substance Painter:常用快捷键
- 记一次处理短信盗刷问题的解决方案