近期因需求需要再次集成微信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实现和微信小程序交互相关推荐

  1. dakai微信小程序 ios_iOS APP拉起微信小程序

    背景:由于公司业务需求,我们公司自己开发了一个微信小程序,然后通过App拉起微信小程序进行交互,有一些功能也可以放在小程序中去实现! 准备:首先你在微信的开放平台创建应用,并通过审核,就是你的App具 ...

  2. APP跳转微信小程序,跳转微信公众号

    一.判断手机是否安装了微信的工具类: //判断手机是否安装了某些程序的工具类 public class IsInstallUtils {//判断是否安装了微信public static boolean ...

  3. 微信小程序交互性能优化利器WXS的使用(一)

    微信小程序交互性能优化利器WXS的使用 WXS简介 WXS原理 注意事项(划重点) WXS的使用 引入WXS WXS的响应事件(重要) 开始食用WXS 封装视图层WXML实用小方法 WXS简介 WXS ...

  4. uniapp App跳转微信小程序并互相传递参数、接收微信小程序传递的参数

    本文是uniapp打包成安卓App. 一.注意事项 1.用到了分享功能,在打包App时,需要配置manifest.json:App 模块配置->Share.按照提示填写微信分享的信息,appid ...

  5. APP 跳转微信小程序和回调

    在同一开放平台账号下的移动应用及小程序无需关联即可完成跳转,非同一开放平台账号下的小程序需与移动应用(APP)成功关联后才支持跳转. 可在"管理中心-移动应用-应用详情-关联小程序信息&qu ...

  6. Android APP跳转微信小程序和APP跳转支付宝小程序传参

    Android APP跳转微信小程序和APP跳转支付宝小程序传参 微信开放文档链接 MINIPROGRAM_TYPE_PREVIEW:体验版. MINIPROGRAM_TYPE_TEST:开发版 MI ...

  7. 如何用Python快速实现一个垃圾分类APP【附带微信小程序】

    嗨害大家好鸭!我是小熊猫❤ 今天这篇文章主要介绍的是: 如何利用现有的工具来实现一个垃圾分类的应用 有什么python相关报错解答自己不会的.或者源码资料/模块安装/女装大佬精通技巧 都可以来这里:( ...

  8. uni-app app 跳转 微信小程序(安卓/ios)

    uni-app app 跳转 微信小程序(安卓/ios) 近日接到需求,需要实现在 app 中直接跳转到微信小程序中,其实非常简单,uni-app 都已经集成好了. 安卓和ios 有点区别,这个需要注 ...

  9. 一图了解App跳转微信小程序关注公众号,推送消息

    一图了解App跳转微信小程序关注公众号,推送消息:

最新文章

  1. python切片语法-Python切片符号(:)用法及示例
  2. 神策数据薛创宇:数据分析与场景实践之“坑位运营”
  3. CGRect vs CGPoint vs CGSize
  4. 无法打开Win11系统小组件怎么办
  5. 【技巧】搜狗输入法特殊技巧
  6. gzip压缩文件解压文件(gz文件)
  7. 有关凸集的证明例题_第1章引言题解1. 用定义验证下列各集合是凸集: (1) S={(X1 ......
  8. python线程暂停_在python中暂停一个线程和另一个线程
  9. 刷新后保持大分类和小分类的展开状态
  10. 理解图像处理中的 双线性内插法(图文说明)
  11. 计算机博士自白:毕业放弃学术去企业,从天之骄子坠落成天生白痴
  12. 2022-7-6-18
  13. exlc表格怎么换行_excel表格怎么换行_excel表格怎么换行上下换行
  14. intel 显卡 opencl安装
  15. linux权限管理详解
  16. 帆船运动-第13届蓝桥杯Scratch省赛真题第2题
  17. OpenVINO工具套件高级课程第一课:如何充分使用OpenVINO工具套件?
  18. 技术所带来的生产率提升,将会大大提高资本要素回报率
  19. 小程序报错:Failed to load local image resource /pages/goods/NaN加载资源失败问题解决
  20. 程序设计与算法3-5:求前n项和

热门文章

  1. 芯片行业模式优缺点及巨头代表梳理
  2. [软考]净现值NPV详细解释及应用,实例讲解收集(信息系统项目管理师-立项管理)...
  3. Navigating to current location (/) is not allowed
  4. 3d wallpaper android,3D Parallax Wallpaper
  5. 浏览安全怎么提升?教你设置安全浏览器信任站点
  6. Matlab播放音频文件(音乐)!
  7. 最近朋友民间借贷起诉,聊天记录内容过多,聊天长截图需要处理成A4纸上,方便打印
  8. CentOS 7安装LMD杀毒软件
  9. Substance Painter:常用快捷键
  10. 记一次处理短信盗刷问题的解决方案