为什么可以通过URL来调起APP - URL Scheme和Intent

在手机浏览器中可以通过URL调起APP是不是很神奇?这篇文章就告诉你为什么。

URL Scheme


先从前端能接触到的URL Scheme分析一下

丢wiki:https://en.wikipedia.org/wiki/Uniform_Resource_Identifier

URL Scheme就是一种协议url,同我们常见的http,ftp的本质一样,资源定位符!

而在Android中自定义的URL Scheme是一种页面内跳转协议。

Android的URL Scheme的结构:

(来自wiki)

表示方式一:

scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]

表示方式二:

<scheme>://<host>:<port>/<path>?<query>

具体例子(伪):

xl://goods:8888/goodsDetail?goodsId=10011002

大体图示:

通过这种类似的URL,APP会收到浏览器通知,并且通过解析URL Scheme(解析这块操作是在安卓容器中处理的)的结构来展现对应的页面(Activity)

前提是在安卓应用中,开发者定义了URL Scheme(自定义),通过安装应用在系统中注册该Scheme信息。

在安卓应用中的AndroidManifest.xml中对标签增加设置Scheme

(来自网络)

在页面中我们就可以通过这样来调用,调起APP并进入对应的详细页面:

window.location.href = 'xl://goods:8888/goodsDetail?goodsId=10011002';

Intent


再从客户端角度Intent分析一下

Intent是一种运行时绑定(run-time binding)机制,Intent可以通过多种方式协助组件之间的通信。

在前面URL Scheme的设置中,可以看到我们设置了<intent-filter>标签中的<data>部分。

具体Android方向的专业理解知识见:Android Activity和Intent机制学习笔记

参考


Uniform Resource Identifier
android Intent机制详解
Android 跨应用间调用: URL Scheme

posted on 2017-09-15 09:57 qize 阅读(...) 评论(...) 编辑 收藏

导航

公告