微信weixin://xxx 分析
通过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 分析的更多相关文章
- Android插件化与热修复(六)-微信Tinker原理分析
Tinker热修复原理分析 热补丁技术是在用户不需要重新安装应用的情况下实现应用更新,可快速解决一些线上问题.热补丁省去了Android应用发布版本的成本,而且用户端的更新也是无感知的. Tinker ...
- 微信APP简要分析
Part1 走进微信APP 很明显,微信是很成功的APP. 微信 (WeChat) 是腾讯公司于2011年1月21日推出的一个为智能终端提供即时通讯服务的免费应用程序,现已是超过九亿人使用的手机应用. ...
- 微信跳转技术,浏览器唤起微信,weixin://dl/business/?ticket=
weixin://dl/business/?ticket= 到底怎么生成的?调用以下接口 weixin://dl/scan 扫一扫weixin://dl/feedback 反馈weixin://dl ...
- asp.net mvc 微信支付代码分析(根据沐雪微信平台3.1商城业务来分析)
开发微信应用,微信支付是永远要面对的.现在的微信支付相对以往已经很稳定,很少出现诡异情况.再加上无数人开发的经验分享,现在开发微信支付已经没什么难度了. 我这次主要是想基于沐雪微信平台的微商城业务来分 ...
- PHP实现微信退款的分析与源码实现
原文:https://blog.csdn.net/jason19905/article/details/78628349 网上的很多PHP微信支付接入教程都颇为复杂,且需要配置和引入较多的文件,本人通 ...
- 微信小程序分析见解
前两天朋友圈都快被小程序给刷爆了: 对于小程序这方面, 由于没有公测的资格.所以翻阅了许许多多的资料,来了解一下小程序: 微信小程序: 小程序是一种不需要下载安装即可使用的应用,它实现了应用&quo ...
- css3中-moz、-ms、-webkit,-o分别代表的意思,以及微信浏览器内核分析
这种方式在业界上统称:识别码.前缀 //-ms代表[ie]内核识别码 //-moz代表火狐[firefox]内核识别码 //-webkit代表谷歌[chrome]/苹果[safari]内核识别码 // ...
- 微信跳转之WAP跳转微信公众号关注页面链接weixin://dl/business/?ticket=
本文整理了部分微信 URL Schemes,经过本人测试,所有url在微信 6.3.22 版本下都可正常工作.大家可以在 Safari 中打开链接进行尝试.(部分链接仅允许在微信内部浏览器中打开,已用 ...
- Web版微信协议分析—版本2
微信web协议分析(微信网页版 wx2.qq.com) 1.打开首页,分配一个随机uuid,2.根据该uuid获取二维码图片.3.微信客户端扫描该图片,在客户端确认登录.4.浏览器不停的调用一个接口, ...
随机推荐
- Crontab定时备份网站脚本及mysql数据库
1)shell脚本 #!/bin/bash #你要修改的地方从这里开始 MYSQL_USER="root" #mysql用户名 MYSQL_PASS="123456&qu ...
- 转载 配置vue项目
Vue作为前端三大框架之一截至到目前在github上以收获44,873颗星,足以说明其以悄然成为主流.16年10月Vue发布了2.x版本,经过了一段时间的摸索和看官方的教程和api,才了解到2.0版本 ...
- 使用cxfreeze打包成exe文件
旧版本下载链接地址python3.4以下的:https://www.lfd.uci.edu/~gohlke/pythonlibs/#cx_freeze 最新版本python3.5以上直接使用 pip ...
- SA-N26接口和EPS fallback
SA-N26接口和EPS fallback 1 什么是N26接口 如下图,N26(23.501)接口为4G核心网和5G核心网之间的接口,即MME和AMF的接口,用于4G和5G的互操作 2 SA(5GC ...
- Python学习之路【第一篇】:Python简介与入门
Python简介 一.什么是Python Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言 ...
- String类的内存解析
package com.aff.equals; public class TestString { public static void main(String[] args) { String st ...
- Orcle 查询语句
首先,以超级管理员的身份登录oracle sqlplus sys/bjsxt as sysdba --然后,解除对scott用户的锁 alter user scott ac ...
- Chisel3 - model - when
https://mp.weixin.qq.com/s/YGTXky4wff7LXUphUxISQg 介绍创建模块判断逻辑的when命令. 1. when/elsewhen/otherwise ...
- Java实现 蓝桥杯算法提高 求最大值
算法提高 求最大值 时间限制:1.0s 内存限制:256.0MB 问题描述 给n个有序整数对ai bi,你需要选择一些整数对 使得所有你选定的数的ai+bi的和最大.并且要求你选定的数对的ai之和非负 ...
- SQL Server实现 LeetCode 177 第N高的薪水
177. 第N高的薪水 编写一个 SQL 查询,获取 Employee 表中第 n 高的薪水(Salary). +----+--------+ | Id | Salary | +----+------ ...