随着小程序的日渐火热,许多app都做了相应的小程序端,与之而来的两端交互是必不可少的,前几天我们的分享到微信的样式也要求改成了小程序卡片样式的了。其实微信的官方文档还算比较详细,我这就结合自己踩的坑给大家分享一下。
首先app分享小程序卡片需要满足以下要求:
发起分享的App与小程序属于同一微信开放平台帐号。
支持分享小程序类型消息至会话,暂不支持分享至朋友圈。
若客户端版本低于6.5.6,小程序类型分享将自动转成网页类型分享。开发者必须填写网页链接字段,确保低版本客户端能正常打开网页链接。

下面便是相应的代码:

WXMiniProgramObject miniProgramObj = new WXMiniProgramObject();
miniProgramObj.webpageUrl = "http://www.qq.com"; // 兼容低版本的网页链接
miniProgramObj.miniprogramType = WXMiniProgramObject.MINIPTOGRAM_TYPE_RELEASE;// 正式版:0,测试版:1,体验版:2
miniProgramObj.userName = "gh_d43f693ca31f";     // 小程序原始id
miniProgramObj.path = "/pages/media";            //小程序页面路径
WXMediaMessage msg = new WXMediaMessage(miniProgramObj);
msg.title = "小程序消息Title";                    // 小程序消息title
msg.description = "小程序消息Desc";               // 小程序消息desc
msg.thumbData = getThumb();                      // 小程序消息封面图片,小于128k 这个字节数组不能为空 否则无法调起微信页面 调试的时候可以先随便赋值一个new byte[n]SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction("webpage");
req.message = msg;
req.scene = SendMessageToWX.Req.WXSceneSession;  // 目前支持会话
api.sendReq(req);//IWXAPI api = WXAPIFactory.createWXAPI(context, Constants.APP_ID); 这里的api是根据微信的app_id创建的

下面是getThumb()和buildTransaction()方法示例,

private static byte[] getThumb(){byte[] thumb;Bitmap bitmap= BitmapFactory.decodeResource(context.getResources(), R.drawable.icon_app);Bitmap sendBitmap=Bitmap.createScaledBitmap(bmp, THUMB_SIZE, THUMB_SIZE, true);thumb = BitmapUtils.bmpToByteArray(sendBitmap,true);bitmap.recycle();return thumb;
}private static String buildTransaction(final String type) {return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis();}

到现在差不多是就完成了小程序卡片分享了,如果你想直接从app跳转小程序也是可以的,如下:

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);//WXEntryActivity中  public void onResp(BaseResp resp) {  if (resp.getType() == ConstantsAPI.COMMAND_LAUNCH_WX_MINIPROGRAM) {  WXLaunchMiniProgram.Resp launchMiniProResp = (WXLaunchMiniProgram.Resp) resp;  String extraData =launchMiniProResp.extMsg; // 对应JsApi navigateBackApplication中的extraData字段数据  }  }  

那么从小程序跳转到app也比较简单(目前好像是只有通过以上两种方式打开小程序才能够从小程序跳转回app):

<button open-type="launchApp" app-parameter="wechat" binderror="launchAppError">打开APP</button>Page({ launchAppError: function(e) { console.log(e.detail.errMsg) }
})

上面是小程序端的代码,当然,我们还需要在WXEntryActivity做一些处理,下面是具体代码,可以根据自己的实际需求进行修改

import android.content.Intent;
import android.os.Bundle;import com.common.utils.BLog;
import com.common.utils.Constants;
import com.isea.collegedaily.wiki.activity.MainActivity;
import com.tencent.mm.opensdk.constants.ConstantsAPI;
import com.tencent.mm.opensdk.modelbase.BaseReq;
import com.tencent.mm.opensdk.modelbase.BaseResp;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;
import com.umeng.weixin.callback.WXCallbackActivity;//import com.umeng.socialize.weixin.view.WXCallbackActivity;public class WXEntryActivity extends WXCallbackActivity implements IWXAPIEventHandler{// IWXAPI 是第三方app和微信通信的openapi接口private IWXAPI api;@Overrideprotected void onCreate(Bundle bundle) {super.onCreate(bundle);// 通过WXAPIFactory工厂,获取IWXAPI的实例api = WXAPIFactory.createWXAPI(this, Constants.APP_WX_ID, false);//注意://第三方开发者如果使用透明界面来实现WXEntryActivity,需要判断handleIntent的返回值,如果返回值为false,则说明入参不合法未被SDK处理,应finish当前透明界面,避免外部通过传递非法参数的Intent导致停留在透明界面,引起用户的疑惑try {BLog.i("--------handleIntent--------"+api.handleIntent(getIntent(), this));if(!api.handleIntent(getIntent(), this)){finish();}} catch (Exception e) {e.printStackTrace();}}@Overrideprotected void onNewIntent(Intent intent) {super.onNewIntent(intent);setIntent(intent);api.handleIntent(intent, this);}// 微信发送请求到第三方应用时,会回调到该方法@Overridepublic void onReq(BaseReq req) {switch (req.getType()) {case ConstantsAPI.COMMAND_GETMESSAGE_FROM_WX: TODO: 2018/6/20break;case ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX: TODO: 2018/6/20 startMainNoParam();break;default:break;}}@Overridepublic void onResp(BaseResp baseResp) {BLog.i("-------------onResp-------------");}private void startMainNoParam(){Intent intent=new Intent(this, MainActivity.class);startActivity(intent);finish();}
}

如果还有什么问题,可以下载微信的官方demo进行排查
https://open.weixin.qq.com/zh_CN/htmledition/res/dev/download/sdk/WeChatSDK_sample_Android.zip

android中app分享小程序卡片及跳转回app相关推荐

  1. App打开小程序,无法跳转回App的问题

    我的需求: 在App中调起小程序,让小程序去完成支付,支付成功后,在小程序里点击按钮,返回App. 碰到的问题: 支付成功后,点击按钮,无法返回App. 解决方案: 在AndroidManifest. ...

  2. uni-app分享小程序卡片给微信好友

    一.前言 最近有这样一个需求,使用APP将一个小程序的页面分享给微信好友,起初一脸问号,APP分享小程序的页面,两个不相干的东西怎么关联分享?于是乎抱着实现不了的心态在网上看帖子,最后终于在uni-a ...

  3. Android移动应用分享小程序示例

    要求发起分享的App与小程序属于同一微信开放平台帐号. 目前仅支持分享小程序类型消息至会话. 若客户端版本低于6.5.6,小程序类型分享将自动转成网页类型分享.开发者必须填写网页链接字段,确保低版本客 ...

  4. uniapp中app分享小程序方法

    在uniapp中只需要调用uni.share这个api就可以发起app中分享到小程序,其中id需要绑定小程序管理后台中的id. 但是很多时候会报[share:-3]这个错误,官方给出的解释是:'发送失 ...

  5. iOS App跟小程序之间跳转

    移动应用拉起小程序是指用户可以通过接入该功能的第三方移动应用(APP)跳转至某一微信小程序的指定页面,完成服务后跳回至原移动应用(APP). App和小程序互相跳转: 1)App主动发起小程序卡片分享 ...

  6. 微信——APP和小程序互相跳转

    随大流吧.微信小程序出了这么久,现在才学习下. app和小程序互相跳转: 1.App主动发起小程序卡片分享到微信,微信点击打开小程序,这时的小程序可以打开App 2.App主动发起打开小程序,这时的小 ...

  7. 微信公众号发送小程序卡片_小程序、公众号客服消息可以发送小程序卡片啦

    下面的样式,相信不少人都见过,却极少有人知道它叫什么↓↓↓ 这就是小程序卡片,它是微信小程序分享特有的样式.在微信聊天中,经常可以看到这样的样式. 点击小程序卡片就可以跳转到对应的小程序,简单粗暴的跳 ...

  8. APP和小程序有什么区别?

    很多人都会困惑于APP和小程序之间的选择,首先我们需要了解两者的区别. APP和小程序有什么区别? APP和小程序安装使用的区别:APP需要通过应用市场下载.安装,通过桌面图标启动,小程序直接在微信中 ...

  9. 微信小程序多次跳转后不能点_微信小程序运营需要先知道它的规则

    不管是做SEO(搜索引擎优化排名)还是做SEM投放广告,都需要知道它的规则,因为只有知道了他的规则之后才能合理的优化,才能在运营的过程中不踩雷区,合理运用平台的规则来实现自己的目的.那么微信小程序也一 ...

最新文章

  1. Codeforces Round #742 (Div. 2) E. Non-Decreasing Dilemma (线段树维护区间连续问题)
  2. Java Servlet完全教程
  3. 《学习之道》第九章不要突击工作
  4. asp.net中条件查询+分页
  5. 公司电脑监控软件_公司电脑监控软件,如何限制公司电脑网络游戏
  6. adb(Android debug bridge)命令
  7. CSS自定义属性(CSS变量)
  8. linux mpc8313启动流程,基于MPC8313E和FPGA的双口RAM驱动开发
  9. Windows上基于快捷方式的Putty免密码登陆
  10. windows 搭建和配置 hadoop + 踩过的坑
  11. 微型计算机原理与接口技术第二版答案邹逢兴,清华大学出版社-图书详情-《微型计算机原理与接口技术教学辅导(第2版)》...
  12. 小爱同学app安卓版_小爱同学app2.0.1 安卓版 下载 - 51下载网
  13. java 世界时间_Java对世界不同时区timezone之间时间转换的处理方法
  14. 18个好用APP,你手机里有哪些堪称神器的APP
  15. charles抓取移动端的htpps
  16. 计算机专业有必要考研吗?
  17. 虚拟机WindowServer2003共享文件夹
  18. 扒一扒Xcode中的编译标识: -Werror= -Wunused-variable
  19. 分布式系统------概述
  20. Windows下单分区烧录img必备驱动

热门文章

  1. 教你快速将多个TXT文档合并成一个多方法 手工方法无需软件
  2. BarTender打开提示:错误消息#2622
  3. python爬虫 — 爬取豆瓣最受关注图书榜
  4. 陆游和唐婉,潇潇和沐月
  5. 乐优商城:笔记(六):上传微服务:LyUpload
  6. oracle查询大于某个日期的数据,查看某天(或某个时间区间)的数据,请别用between ... and ......
  7. Modbus转Modbus TCP的几种姿势
  8. blender2.8 使用教程 贴图纹理快捷键等。
  9. [TOG2022]DCT-Net: Domain-Calibrated Translation for Portrait Stylization
  10. php判断百度来路,判断是否通过百度搜索进入你的网站 - 小俊学习网