通过weixin://来打开微信客户端:

<a href="weixin://">打开微信</a>
<a href="weixin://dl/business/?ticket=xxx">微信内打开网页</a>

协会说明:

微信跳转入口:

通过反编译,看到weixin://协议的入口定义为WXCustomSchemeEntryActivity,那就是浏览器访问以weixin为scheme的请求时就会打开微信内的WXCustomSchemeEntryActivity

<activity
android:name="com.tencent.mm.plugin.base.stub.WXCustomSchemeEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:excludeFromRecents="true"
android:exported="true"
android:launchMode="singleTop"
android:taskAffinity=".wxpayentry"
android:theme="@style/mm">
<intent-filter>
<data android:scheme="weixin" />
<action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>

内部处理

1.获取携带数据

Uri data = getIntent().getData();

if (data != null) {
String scheme = data.getScheme();
String host = data.getHost();
String query = data.getQuery(); Log.i("MicroMsg.WXCustomSchemeEntryActivity", String.format("uri is %s,scheme is %s, host is %s, query is %s", data.toString(), scheme, host, query));
}

2.判断是否合法

// 校验是否非法
if (data != null) {
String uri = data.getScheme() + "://" + data.getHost() + data.getPath();
// qby详情看问末附录
if (!qby.containsKey(uri) && !data.toString().startsWith("weixin://dl/business")) {
return;
}
}

3.进行跳转

根据url对应的地址,调用微信内的路由组件进行跳转。

所有协议

HashMap qyb = new HashMap();
qyb.put("weixin://", 0L);
qyb.put("weixin://dl/stickers", 1L);
qyb.put("weixin://dl/games", 2L);
qyb.put("weixin://dl/moments", 4L);
qyb.put("weixin://dl/add", 8L);
qyb.put("weixin://dl/shopping", 16L);
qyb.put("weixin://dl/groupchat", 32L);
qyb.put("weixin://dl/scan", 64L);
qyb.put("weixin://dl/profile", 128L);
qyb.put("weixin://dl/settings", 256L);
qyb.put("weixin://dl/general", 512L);
qyb.put("weixin://dl/help", 1024L);
qyb.put("weixin://dl/notifications", 2048L);
qyb.put("weixin://dl/terms", 4096L);
qyb.put("weixin://dl/chat", 8192L);
qyb.put("weixin://dl/features", 16384L);
qyb.put("weixin://dl/clear", 32768L);
qyb.put("weixin://dl/feedback", 65536L);
qyb.put("weixin://dl/faq", 131072L);
qyb.put("weixin://dl/recommendation", 262144L);
qyb.put("weixin://dl/groups", 524288L);
qyb.put("weixin://dl/tags", 1048576L);
qyb.put("weixin://dl/officialaccounts", 2097152L);
qyb.put("weixin://dl/posts", 4194304L);
qyb.put("weixin://dl/favorites", 8388608L);
qyb.put("weixin://dl/privacy", 16777216L);
qyb.put("weixin://dl/security", 33554432L);
qyb.put("weixin://dl/wallet", 67108864L);
qyb.put("weixin://dl/businessPay", 134217728L);
qyb.put("weixin://dl/businessPay/", 134217728L);
qyb.put("weixin://dl/wechatout", 268435456L);
qyb.put("weixin://dl/protection", 1073741824L);
qyb.put("weixin://dl/card", 2147483648L);
qyb.put("weixin://dl/about", 1125899906842624L);
qyb.put("weixin://dl/blacklist", 4294967296L);
qyb.put("weixin://dl/textsize", 8589934592L);
qyb.put("weixin://dl/sight", 17179869184L);
qyb.put("weixin://dl/languages", 34359738368L);
qyb.put("weixin://dl/chathistory", 68719476736L);
qyb.put("weixin://dl/bindqq", 137438953472L);
qyb.put("weixin://dl/bindmobile", 274877906944L);
qyb.put("weixin://dl/bindemail", 549755813888L);
qyb.put("weixin://dl/securityassistant", 1099511627776L);
qyb.put("weixin://dl/broadcastmessage", 2199023255552L);
qyb.put("weixin://dl/setname", 4398046511104L);
qyb.put("weixin://dl/myQRcode", 8796093022208L);
qyb.put("weixin://dl/myaddress", 17592186044416L);
qyb.put("weixin://dl/hidemoments", 35184372088832L);
qyb.put("weixin://dl/blockmoments", 70368744177664L);
qyb.put("weixin://dl/stickersetting", 140737488355328L);
qyb.put("weixin://dl/log", 281474976710656L);
qyb.put("weixin://dl/wechatoutcoupon", 562949953421312L);
qyb.put("weixin://dl/wechatoutshare", 18014398509481984L);
qyb.put("weixin://dl/personalemoticon", 4503599627370496L);
qyb.put("weixin://dl/designeremoji", 9007199254740992L);
qyb.put("weixin://dl/sightdraft", 576460752303423488L);
qyb.put("weixin://dl/jumpWxa/", 576460752303423489L);
qyb.put("weixin://dl/offlinepay/", 576460752303423490L);

微信weixin://xxx 分析的更多相关文章

  1. Android插件化与热修复(六)-微信Tinker原理分析

    Tinker热修复原理分析 热补丁技术是在用户不需要重新安装应用的情况下实现应用更新,可快速解决一些线上问题.热补丁省去了Android应用发布版本的成本,而且用户端的更新也是无感知的. Tinker ...

  2. 微信APP简要分析

    Part1 走进微信APP 很明显,微信是很成功的APP. 微信 (WeChat) 是腾讯公司于2011年1月21日推出的一个为智能终端提供即时通讯服务的免费应用程序,现已是超过九亿人使用的手机应用. ...

  3. 微信跳转技术,浏览器唤起微信,weixin://dl/business/?ticket=

    weixin://dl/business/?ticket=  到底怎么生成的?调用以下接口 weixin://dl/scan 扫一扫weixin://dl/feedback 反馈weixin://dl ...

  4. asp.net mvc 微信支付代码分析(根据沐雪微信平台3.1商城业务来分析)

    开发微信应用,微信支付是永远要面对的.现在的微信支付相对以往已经很稳定,很少出现诡异情况.再加上无数人开发的经验分享,现在开发微信支付已经没什么难度了. 我这次主要是想基于沐雪微信平台的微商城业务来分 ...

  5. PHP实现微信退款的分析与源码实现

    原文:https://blog.csdn.net/jason19905/article/details/78628349 网上的很多PHP微信支付接入教程都颇为复杂,且需要配置和引入较多的文件,本人通 ...

  6. 微信小程序分析见解

    前两天朋友圈都快被小程序给刷爆了: 对于小程序这方面,  由于没有公测的资格.所以翻阅了许许多多的资料,来了解一下小程序: 微信小程序: 小程序是一种不需要下载安装即可使用的应用,它实现了应用&quo ...

  7. css3中-moz、-ms、-webkit,-o分别代表的意思,以及微信浏览器内核分析

    这种方式在业界上统称:识别码.前缀 //-ms代表[ie]内核识别码 //-moz代表火狐[firefox]内核识别码 //-webkit代表谷歌[chrome]/苹果[safari]内核识别码 // ...

  8. 微信跳转之WAP跳转微信公众号关注页面链接weixin://dl/business/?ticket=

    本文整理了部分微信 URL Schemes,经过本人测试,所有url在微信 6.3.22 版本下都可正常工作.大家可以在 Safari 中打开链接进行尝试.(部分链接仅允许在微信内部浏览器中打开,已用 ...

  9. Web版微信协议分析—版本2

    微信web协议分析(微信网页版 wx2.qq.com) 1.打开首页,分配一个随机uuid,2.根据该uuid获取二维码图片.3.微信客户端扫描该图片,在客户端确认登录.4.浏览器不停的调用一个接口, ...

随机推荐

  1. Django之url反向解析

    在urls.py文件中,在进行url映射时,为请求的url命个名,以便在模板页面或者views.py视图中可以进行反向解析,同时在修改了url映射的请求路径,名称不变的情况下,不再修改模板页面或者视图 ...

  2. DPDK Hash Library原理(学习笔记)

    0 前言 本文主要翻译至DPDK的官方编程指南,在谷歌翻译的基础上根据自己的理解做了一些修改.网上搜索的很多中文翻译大多是翻译后直接黏贴上来,有时候连语句都读不通.希望本文能够对你有所帮助. 1 介绍 ...

  3. 苏浪浪 201771010120《面向对象程序设计(java)》第八周学习总结

    1.实验目的与要求 (1) 掌握接口定义方法: (2) 掌握实现接口类的定义要求: (3) 掌握实现了接口类的使用要求: (4) 掌握程序回调设计模式: (5) 掌握Comparator接口用法: ( ...

  4. LaunchScreen作为启动图设置,修改无效的解决方案

    原有的推流APP用launchScreen做的启动图,现在要修改一张,发现修改无效. 当前测试的方法有 1,重启Xcode  卸载app 清楚xcode缓存 2,修改launchScreen.stor ...

  5. Golang源码学习:调度逻辑(二)main goroutine的创建

    接上一篇继续分析一下runtime.newproc方法. 函数签名 newproc函数的签名为 newproc(siz int32, fn *funcval) siz是传入的参数大小(不是个数):fn ...

  6. mysql中 Rank、DENSE_RANK()的区别

    相同点:RANK()和DENSE_RANK()的是排名函数 不同点:RANK()是跳跃排序,即如果有两条记录重复,接下来是第三级别 如:1 2 2 4,会跳过3 DENSE_RANK()是连续排序,即 ...

  7. 网络编程杂谈之TCP协议

    TCP协议属于网络分层中的传输层,传输层作用的就是建立端口与端口的通信,而其下一层网络层的主要作用是建立"主机到主机"的通信,所以在我们日常进行网络编程时只要确定主机和端口,就能实 ...

  8. redis 缓存穿透,缓存雪崩,缓存击穿

    1.缓存穿透:缓存穿透是指查询一个不存在的数据,由于缓存是不命中,将去查询数据库,但是数据库也无此记录,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义.在流量大时,可能DB就挂掉 ...

  9. 校园网络 luogu P2812 (又是强联通)

    题目传送门!(luogu) 首先考虑问题一 不难想到,如果有一个学校作为终端机,那么跟其处于同一个强联通中的所有学校就可以不用作为终端机了. 那么,问题一也就迎刃而解了:找到所有入度为0的缩点.因为这 ...

  10. [JavaWeb基础] 001.简单的JavaWeb代码和Tomcat配置部署

    简介: 其实说明白了就是J2EE应用开发,前端可以有很多的展现方式,后端由Java做逻辑运算和数据支撑.适用于创建服务器应用程序和服务,为搭建具有可伸缩性.灵活性.易维护性的商务系统提供了良好的机制. ...