为什么可以通过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
为什么可以通过URL来调起APP - URL Scheme和Intent的更多相关文章
- H5页面中尝试调起APP
安卓版本5.0以上 IOS版本10.0以上 采用事件触发的方式处理唤醒APP 市面上常见的功能 这种功能现如今应该非常普遍了,淘宝H5,知乎H5等等... 点击后会调起APP或者打开下载页面或者直接进 ...
- 网页调起App之应用实践
声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场.举报 新春佳节即将到来,北京的上地&西二旗.望京&国贸.五道口&中关村地区等程序员 ...
- h5 调起app 如果没安装就跳转下载
<!doctype html> <html> <head> <title></title> <meta charset="u ...
- android端,webview内url跳转到app本地
这是和一个前端同事沟通. app内嵌入他的web页,要通过web页内的url跳转到app的详细内容. 他的android同事,没有思路. 其实嵌入web页,用的webview控件,只要能找到webvi ...
- iOS9 白名单问题 -canOpenURL: failed for URL: "xx" - error:"This app is not allowed to query for scheme xx"
[iOS开发]-canOpenURL: failed for URL: "xx" - error:"This app is not allowed to query fo ...
- django创建app、在视图函数及url中使用参数、url命名、通过redirect实现网页路径跳转
app用来实现一个独立的功能,视图一般都写在app的view.py中,并且视图的第一个参数永远是request,视图的返回值必须是HttpResponseBase对象或子类的对象. 创建一个app:f ...
- h5外部浏览器直接调起app
1. 安卓端: 其中,scheme必须是小写的,同时要求H5必须是“<a href="appback://">启动应用程序</a> ” 2. h5端完整示例 ...
- Instruments Time profiler 调优APP 之图片解码
以前闲时用instruments的Time profiler调试过APP,发现用tableView: cellForRowAtIndexPath: 中cell的图片设置耗时较多,之前改了一下,如下 d ...
- 实现短信超链接调起APP
因APP推广的需求,需要给APP用户定期发送短信提醒登录使用,为了更好的用户体验在短信内容中嵌入了可以直接打开APP的超链接,下面介绍一下具体的代码实现. 编辑openApp.html文件: < ...
随机推荐
- 表达式求值(二叉树方法/C++语言描述)(五)
本例中的二叉树图是使用Graphviz绘制的(Graphviz官网),在Ubuntu Linux下可以使用apt-get命令安装它: sudo apt-get install graphviz 表达式 ...
- AngularJS--购物车全选/取消全选功能实现
刚学习angularJS,于是练习写了一个类似于购物车的全选/取消全选的功能,主要实现的功能有: 1.勾选全选checkbox,列表数据全部被勾选,取消同理,用ng-model实现双向绑定: 2.选中 ...
- 什么是IAT重定向
例壳:telock 0.98 仅允许非商业转载,转载请注明出处
- jQuery.ajax success 与 complete 区别
作者QQ:1095737364 QQ群:123300273 欢迎加入! 天天用,不知所以然: $.ajax({ type: "post", u ...
- golang 的 http cookie 用法
golang的http cookie用法 在服务端程序开发的过程中,cookie经常被用于验证用户登录.golang 的 net/http 包中自带 http cookie的定义,下面就来讲一下coo ...
- ORACLE索引监控的简单使用
--ORACLE索引监控的简单使用-------------------------2013/11/20 说明: 应用程序在开发时,可能会建立众多索引,但是这些索引的使用到底怎么样,是否有些索 ...
- Redis sentinel 哨兵模式集群方案配置
第一个方案是创建 redis cluster,第二种方案就是用哨兵模式来进行主从替换以及故障恢复.兵模式集群方案配置 一.sentinel介绍 Sentinel作用: 1):Master状态检测 2) ...
- iOS - Block底层解析
Block是iOS开发中一种比较特殊的数据结构,它可以保存一段代码,在合适的地方再调用,具有语法简介.回调方便.编程思路清晰.执行效率高等优点,受到众多猿猿的喜爱.但是Block在使用过程中,如果对B ...
- Android自定义控件系列之基础篇
一.概述 在android开发中很多UI控件往往需要进行定制以满足应用的需要或达到更加的效果,接下来就通过一个系列来介绍自定义控件,这里更多是通过一些案例逐步去学习,本系列有一些典型的应用,掌握好了大 ...
- JMeter脚本录制
1.1. 使用第三方录制方式或代理录制方式(建议) 第三方采用:http://www.badboy.com.au/ 通过badboy来录制,录制后另存为jmx格式即可. 操作步骤: a.打开badb ...