前言:

我们在使用微信的过程中,经常可以通过别人分享的链接,直接跳转到一些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相关推荐

  1. Android URL scheme跳转失败(源码实现排查思路知识拓展)

    目录 问题 实现 排查思路 知识拓展 包可见性 scheme targetsdkVersion 问题 App A的Activity A通过scheme跳转至App B的Activity B,跳转失败. ...

  2. Android URL Scheme的学习和使用

    ======摘抄学习====== 什么是 URL Scheme? android中的scheme是一种页面内跳转协议. 通过定义自己的scheme协议,可以非常方便跳转app中的各个页面: 通过sch ...

  3. android url格式校验,Android URL Scheme的学习和使用

    ======摘抄学习====== 什么是 URL Scheme? android中的scheme是一种页面内跳转协议. 通过定义自己的scheme协议,可以非常方便跳转app中的各个页面: 通过sch ...

  4. android url scheme 跳转传值,如何自定义 URL Scheme 进行跳转

    一.URL Scheme 简介和作用 在 :// 之前的部分就称为 URL Scheme. 也就是说 http://www.jianshu.com/ 的 URL Scheme 就是 http . 更多 ...

  5. 常用移动应用 Packagename 和 URL Scheme

    常用移动应用 Packagename 和 URL Scheme App URLS App Packagename (Android) Url Scheme (iOS) 支付宝 com.eg.andro ...

  6. android搜索app下载地址,如何找出APP的URL Scheme

    今日壁纸 温馨提示:先看文末总结或先看(3)WEB端 什么是APP URL scheme 玩手机经常会碰到浏览器里提示即将跳转到某APP,或者微信里提醒即将打开某APP,这其中的原理,一般就是通过UR ...

  7. 设置IOS平台和Android平台APP的URL Scheme

    URL Scheme的作用 APP可以向手机操作系统注册一个 URL scheme,该 scheme 用于从浏览器或其他应用中启动本应用. 设置IOS平台的URL Scheme IOS应用在info. ...

  8. android scheme 配置多个,Android业务组件化之URL Scheme使用

    Android业务组件化之URL Scheme使用 H5打包的apk使用(Android平台通过UrlSchemes与第三方应用相互调用) 什么是 URL Scheme? android中的schem ...

  9. 【Android 教程系列第 12 篇】常用 App 的 URL Scheme

    这是[Android 教程系列第 12 篇],如果觉得有用的话,欢迎关注专栏. App 的 URL Scheme 就像网页的 url 链接一样,可以打开 App 或跳转到相应的页面. 下面是我结合 参 ...

  10. Android之okdownload下载提示奔溃Expected URL scheme ‘http‘ or ‘https‘ but was ‘data‘

    1 问题 客户现场奔溃在firebase上面提示错误信息如下 Fatal Exception: java.lang.IllegalArgumentException: Expected URL sch ...

最新文章

  1. 一个简单案例,带你看懂GC日志!
  2. java求质数为什么%3ci 2_C语言程序设计部分习题及例题参考程序
  3. oracle11g memory_target,Oracle11g启动报:ORA-00845: MEMORY_TARGET not supported on this system
  4. 【Yarn】Yarn : 日志管理
  5. Mysql学习总结(44)——Linux下如何实现mysql数据库每天自动备份定时备份
  6. html5移动web开发实战必读书记
  7. C#系列四《C#运算符与表达式》
  8. c#编写三角形面积公式_三角形的面积公式二叙
  9. 数学家、数学轶事与数学史话
  10. ant中调用外部ant任务的两种方法
  11. 惠普HP Photosmart C4200 打印机驱动
  12. onedrive已停止工作_4、工作簿的基本操作
  13. C++控制台RPG游戏具体实现思路: 任务系统
  14. GN+NINJA环境搭建(MacOS Windows)
  15. 安防视频监控系统方案 现代机场安防视频监控系统
  16. 音质好的TWS耳机有哪些?音质最好的TWS耳机推荐
  17. WPF 自定义控件-布局控件
  18. ios13 无法传参_iOS13.1 正式版来了,加入了降频功能
  19. mcrypt拓展_PHP添加mcrypt扩展模块
  20. void Delay(__IO u32 nCount)最简单的延时函数

热门文章

  1. Web前端助手-功能丰富的Chrome插件
  2. (崩溃整理)EDEM多体动力学EDEM-ADAMS耦合步骤,及报错问题分析
  3. 使用国产化的TongWeb服务器使用手册
  4. java程序员简历项目经验_程序员简历中的项目经验怎么写
  5. MATLAB实现DES算法子密钥生成
  6. 蓝桥杯真题-数列求值(填空-10分)
  7. 复旦计算机学院软件工程,2019年复旦961软件工程专硕考研初试363+复试经验分享...
  8. vb.net的UI设计
  9. 学校计算机维护投标书,信息化系统硬件及应用系统安全运维服务投标书范本
  10. 【STM32】Keil v5下载与安装