Android URL Scheme
前言:
我们在使用微信的过程中,经常可以通过别人分享的链接,直接跳转到一些APP内部。比如京东、网易云音乐,我们通过在这两个APP内部分享链接到微信,微信中点击链接进入微信浏览器打开分享的页面,可以在页面中看到直接打开的按钮,点击直接打开就进入了该APP的对应的页面。实际上就是从微信浏览器中的一个页面跳转到APP指定的页面。这一种效果就是通过URL Scheme来实现的。
URL Scheme
URL Scheme是一种页面内跳转协议,通过定义自己的URL Scheme协议,可以
从一个APP中打开另外一个APP指定的页面,也可以从H5页面中跳转到APP指定的页面(实际上就是从一个浏览器中的一个页面跳转到APP指定页面)。
URL Scheme协议格式:
一个完整的完整的URL Scheme协议格式由scheme、host、port、path和query组成,其结构如下所示:
<scheme>://<host>:<port>/<path>?<query>
scheme可以是常见的协议名 (http、file等)也可以是自定义的协议名(自定义一个字符串即可),一般打开一个APP,大多使用自定义的协议名。
如下就是一个自定义的URL
caishilive://caishi:8080/loadtooldetail?tool_id=100
caishilive:即Scheme 该Scheme协议名称
caishi:即Host,代表Scheme作用于哪个地址域
8080:即port,代表端口号
loadtooldetail:即path,代表打开的页面
tool_id:即query,代表传递的参数
URL Scheme使用
URL Scheme的使用要先在AndroidManifest.xml中配置能接受Scheme方式启动的activity;
<activity
android:name=".ui.tool.LoadToolDetailActivity"android:screenOrientation="portrait"><!--要想在别的App上能成功调起App,必须添加intent过滤器--><intent-filter><!--协议部分,随便设置--><data
android:host="caishi"android:path="/loadtooldetail"android:port="8080"android:scheme="caishilive"/><!--下面这几行也必须得设置--><category android:name="android.intent.category.DEFAULT"/><action android:name="android.intent.action.VIEW"/><category android:name="android.intent.category.BROWSABLE"/></intent-filter></activity>
获取Scheme跳转的参数
Intent intent = getIntent();String scheme = intent.getScheme();String dataString = intent.getDataString();Uri uri = intent.getData();if (uri != null) {//完整的url信息String url = uri.toString();//scheme部分String schemes = uri.getScheme();//host部分String host = uri.getHost();//port部分int port = uri.getPort();//访问路径String path = uri.getPath();//编码路径String path1 = uri.getEncodedPath();//query部分String queryString = uri.getQuery();//获取参数值String systemInfo = uri.getQueryParameter("tool_id");}
调用方式:
(1)网页调用
<a href="caishilive://caishi:8080/loadtooldetail?tool_id=100">打开APP工具详情页</a>
(2)APP上调用
Intent action = new Intent(Intent.ACTION_VIEW);StringBuilder builder = new StringBuilder();builder.append("caishilive://caishi:8080/loadtooldetail?tool_id=100");action.setData(Uri.parse(builder.toString()));startActivity(action);
当然跳转前要判断一下该URL Scheme是否有效
private boolean schemeValid() {PackageManager manager = mContext.getPackageManager();Intent action = new Intent(Intent.ACTION_VIEW);action.setData(Uri.parse("caishilive://caishi:8080/loadtooldetail?tool_id=100"));List list = manager.queryIntentActivities(action, PackageManager.GET_RESOLVED_FILTER);return list != null && list.size() > 0;}
以上就是URL Scheme的使用
Android URL Scheme相关推荐
- Android URL scheme跳转失败(源码实现排查思路知识拓展)
目录 问题 实现 排查思路 知识拓展 包可见性 scheme targetsdkVersion 问题 App A的Activity A通过scheme跳转至App B的Activity B,跳转失败. ...
- Android URL Scheme的学习和使用
======摘抄学习====== 什么是 URL Scheme? android中的scheme是一种页面内跳转协议. 通过定义自己的scheme协议,可以非常方便跳转app中的各个页面: 通过sch ...
- android url格式校验,Android URL Scheme的学习和使用
======摘抄学习====== 什么是 URL Scheme? android中的scheme是一种页面内跳转协议. 通过定义自己的scheme协议,可以非常方便跳转app中的各个页面: 通过sch ...
- android url scheme 跳转传值,如何自定义 URL Scheme 进行跳转
一.URL Scheme 简介和作用 在 :// 之前的部分就称为 URL Scheme. 也就是说 http://www.jianshu.com/ 的 URL Scheme 就是 http . 更多 ...
- 常用移动应用 Packagename 和 URL Scheme
常用移动应用 Packagename 和 URL Scheme App URLS App Packagename (Android) Url Scheme (iOS) 支付宝 com.eg.andro ...
- android搜索app下载地址,如何找出APP的URL Scheme
今日壁纸 温馨提示:先看文末总结或先看(3)WEB端 什么是APP URL scheme 玩手机经常会碰到浏览器里提示即将跳转到某APP,或者微信里提醒即将打开某APP,这其中的原理,一般就是通过UR ...
- 设置IOS平台和Android平台APP的URL Scheme
URL Scheme的作用 APP可以向手机操作系统注册一个 URL scheme,该 scheme 用于从浏览器或其他应用中启动本应用. 设置IOS平台的URL Scheme IOS应用在info. ...
- android scheme 配置多个,Android业务组件化之URL Scheme使用
Android业务组件化之URL Scheme使用 H5打包的apk使用(Android平台通过UrlSchemes与第三方应用相互调用) 什么是 URL Scheme? android中的schem ...
- 【Android 教程系列第 12 篇】常用 App 的 URL Scheme
这是[Android 教程系列第 12 篇],如果觉得有用的话,欢迎关注专栏. App 的 URL Scheme 就像网页的 url 链接一样,可以打开 App 或跳转到相应的页面. 下面是我结合 参 ...
- Android之okdownload下载提示奔溃Expected URL scheme ‘http‘ or ‘https‘ but was ‘data‘
1 问题 客户现场奔溃在firebase上面提示错误信息如下 Fatal Exception: java.lang.IllegalArgumentException: Expected URL sch ...
最新文章
- 一个简单案例,带你看懂GC日志!
- java求质数为什么%3ci 2_C语言程序设计部分习题及例题参考程序
- oracle11g memory_target,Oracle11g启动报:ORA-00845: MEMORY_TARGET not supported on this system
- 【Yarn】Yarn : 日志管理
- Mysql学习总结(44)——Linux下如何实现mysql数据库每天自动备份定时备份
- html5移动web开发实战必读书记
- C#系列四《C#运算符与表达式》
- c#编写三角形面积公式_三角形的面积公式二叙
- 数学家、数学轶事与数学史话
- ant中调用外部ant任务的两种方法
- 惠普HP Photosmart C4200 打印机驱动
- onedrive已停止工作_4、工作簿的基本操作
- C++控制台RPG游戏具体实现思路: 任务系统
- GN+NINJA环境搭建(MacOS Windows)
- 安防视频监控系统方案 现代机场安防视频监控系统
- 音质好的TWS耳机有哪些?音质最好的TWS耳机推荐
- WPF 自定义控件-布局控件
- ios13 无法传参_iOS13.1 正式版来了,加入了降频功能
- mcrypt拓展_PHP添加mcrypt扩展模块
- void Delay(__IO u32 nCount)最简单的延时函数
热门文章
- Web前端助手-功能丰富的Chrome插件
- (崩溃整理)EDEM多体动力学EDEM-ADAMS耦合步骤,及报错问题分析
- 使用国产化的TongWeb服务器使用手册
- java程序员简历项目经验_程序员简历中的项目经验怎么写
- MATLAB实现DES算法子密钥生成
- 蓝桥杯真题-数列求值(填空-10分)
- 复旦计算机学院软件工程,2019年复旦961软件工程专硕考研初试363+复试经验分享...
- vb.net的UI设计
- 学校计算机维护投标书,信息化系统硬件及应用系统安全运维服务投标书范本
- 【STM32】Keil v5下载与安装