微信链接打开本地应用

来源:互联网 发布:自动排料软件 编辑:程序博客网 时间:2024/04/30 14:29

一些app可以分享链接到微信、QQ等应用,在浏览器中打开这些链接时可以进入到该app。通过实验,发现可以通过配置activity的schemehost等属性可以来完成浏览器打开跳转到app的功能,具体可以参考http://jingyan.baidu.com/article/c45ad29cd6b155051753e2be.html。但是在实际使用中发现微信的浏览器里面却不能进行app的跳转,原因是微信浏览器安全性做了限制。

在反编译nice(一个图片分享app)后发现别人的解决方案。nice在分享一个帖子到微信好友,在微信浏览器打开的链接如下:http://www.oneniceapp.com/photo/index/56616716e58d80e93802315c3868d94b?nfrom=wechat_contact&act=share_photo&utm_source=wandoujia&utm_medium=&from=singlemessage&isappinstalled=1,其中isappInstalled是微信自动增加的判断app是否安装在当前手机的字段,通过查看这个界面的Html源码发现如下代码

<header>

<iframewidth="1px" height="1px" style="display:none" src="http://127.0.0.1:4545/?sid=25696409"></iframe>

</header>

nice在header里面定义了界面跳转,我很奇怪为何nice使用了127.0.0.1作为scheme,该地址是本机的保留IP,研究发现原来nice开启了一个service来监听本机4545端口的请求情况,当浏览器跳转http://127.0.0.1:4545/?sid=25696409这个地址的时候,会对本机的4545 http端口发起请求,于是我们只要在这个应用中来捕获这个http请求,获取该请求的url,根据不同的url进行不同的处理,这样就能绕过微信浏览器打开我们自己的应用了。

该方案的实现步骤主要如下:在html中设置iframe(127.0.0.1:端口号;可参照Nice链接)->开启一个service->通过service启动一个android web服务器来接受4545端口的请求->接受到请求后解析url地址->根据地址参数打开我们自己的app。

       监听4545端口的代码可以参照:http://blog.csdn.net/xxdddail/article/details/20996843

0 0