Scheme协议详细介绍
目录介绍
- 1.URL Scheme使用场景介绍
-
2.URL Scheme基础介绍
- 2.1 什么是URL Scheme?
- 2.2 URL Scheme协议格式解释
- 2.3 Scheme链接格式样式
-
3.URL Scheme如何使用
- 3.1 设置Scheme
- 3.2 获取Scheme跳转的参数,并添加跳转方式
- 3.3 调用方式
- 3.4 如何判断一个Scheme是否有效
- 3.5 Scheme在短信息中注意要点
关于Scheme应用案例
- https://github.com/yangchong211/YCAudioPlayer
- 可以参考该demo中的AppTool工具app,用aidl通信,还支持scheme协议跳转,挺好玩的!
关于链接
1.URL Scheme使用场景介绍
-
URL Scheme使用场景,目前1,2,5使用场景很广,有没有一种熟悉的感觉?
- 1.通过小程序,利用Scheme协议打开原生app
- 2.H5页面点击锚点,根据锚点具体跳转路径APP端跳转具体的页面
- 3.APP端收到服务器端下发的PUSH通知栏消息,根据消息的点击跳转路径跳转相关页面
- 4.APP根据URL跳转到另外一个APP指定页面
- 5.通过短信息中的url打开原生app
2.URL Scheme基础介绍
2.1 什么是URL Scheme?
- android中的scheme是一种页面内跳转协议,是一种非常好的实现机制,通过定义自己的scheme协议,可以非常方便跳转app中的各个页面
2.2 URL Scheme协议格式
String urlStr="http://www.ycbjie.cn:80/yc?id=hello&name=cg"; //url = protocol + authority(host + port) + path + query //协议protocol= http //域名authority= www.ycbjie.cn:80 //页面path= /yc //参数query= id=hello&name=cg //authority = host + port //主机host= www.ycbjie.cn //端口port= 80
2.3 Scheme链接格式样式
- 样式:[scheme]://[host]/[path]?[query]
3.URL Scheme如何使用
3.1 设置Scheme
- 在AndroidManifest.xml中对标签增加设置Scheme
<activity android:name=".ui.main.ui.activity.SchemeFirstActivity" android:screenOrientation="portrait"> <!--Android 接收外部跳转过滤器--> <!--要想在别的App上能成功调起App,必须添加intent过滤器--> <intent-filter> <!-- 协议部分配置 ,注意需要跟web配置相同--> <!--协议部分,随便设置 yc://ycbjie:8888/from?type=yangchong --> <data android:scheme="yc" android:host="ycbjie" android:path="/from" android:port="8888"/> <!--下面这几行也必须得设置--> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <action android:name="android.intent.action.VIEW" /> </intent-filter> </activity>
3.2 获取Scheme跳转的参数,并添加跳转方式
public class SchemeFirstActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); Uri uri = getIntent().getData(); if (uri != null) { //获取指定参数值 String type = uri.getQueryParameter("type"); Log.e( "UrlUtils","main: " + type); if(type.equals("yangchong")){ ActivityUtils.startActivity(GuideActivity.class); }else if(type.equals("main")){ ActivityUtils.startActivity(MainActivity.class); } } finish(); } }
3.3 调用方式
- 3.3.1 原生调用
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("yc://ycbjie:8888/from?type=yangchong")); startActivity(intent);
- 3.3.2 网页调用
<a href="yc://ycbjie:8888/from?type=yangchong">打开叮咚app</a>
- 3.3.3 短信息中调用
3.4 如何判断一个Scheme是否有效
PackageManager packageManager = getPackageManager(); Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("yc://ycbjie:8888/from?type=yangchong")); List<ResolveInfo> activities = packageManager.queryIntentActivities(intent, 0); boolean isValid = !activities.isEmpty(); if (isValid) { startActivity(intent); }
3.5 Scheme在短信息中注意要点
- 设置android:scheme="http"或者android:scheme="https"后,点击短信息或者h5页面,发现没有跳到指定的页面,反而打开的是网页链接。
关于我的博客
- 我的个人站点:www.yczbj.org,www.ycbjie.cn
- github:https://github.com/yangchong211
- 知乎:https://www.zhihu.com/people/yang-chong-69-24/pins/posts
- 简书:http://www.jianshu.com/u/b7b2c6ed9284
- csdn:http://my.csdn.net/m0_37700275
- 喜马拉雅听书:http://www.ximalaya.com/zhubo/71989305/
- 开源中国:https://my.oschina.net/zbj1618/blog
- 泡在网上的日子:http://www.jcodecraeer.com/member/content_list.php?channelid=1
- 邮箱:yangchong211@163.com
- 阿里云博客:https://yq.aliyun.com/users/article?spm=5176.100- 239.headeruserinfo.3.dT4bcV
- segmentfault头条:https://segmentfault.com/u/xiangjianyu/articles

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Android 项目集成腾讯X5浏览器内核
1、为什么要集成腾讯 X5 浏览器内核 肯定是事出有因,简单来说,JS代码写的不标准,与部分机型内嵌套的浏览器内核产生矛盾,出现底层(os)bug导致,不得不费事搞一个其它内核进行加载网页,具体原因。 2、官方网站及导入 jar 包等 (1)、TBS腾讯浏览服务、jar 下载地址、官方接入文档 目前为止(2018/8/3),就三种。如图: TBS sdk 我们就下载对简单第一种吧,足以满足我们的需要了。 (2)、项目内导入jar文件 解压之后,文件很多,但是有用的我感觉就是jar文件了。 解压之后 (3)、如何在自己项目内集成jar文件(基础) 第一步:将“.jar”文件考入到项目下面的libs文件夹,如图: 项目内拷入 jar 文件 第二步:在 jar 文件上右击,调出下拉菜单 ,点击下图标注的 Add As Library... 选项 第二步 第三步:选择jar 文件添加到的项目,我这里直接确定就行了: 第三步 第四步;等待Android Studio 进行同步下载,配置等等。 第五步:检查是否导入成功 第五步 3、项目实战 (1)、布局代码 布局内创建一个腾讯的 WebView ...
- 下一篇
Android小知识10则(下)
Android小知识10则(上)github传送门 注: 在目录中点击可以跳转到具体代码页 目录 Chronometer和CountDownTimer计时器 Chronometer的使用 CountDownTimer的使用 正则表达式 动态数组 shape绘制 矩形 椭圆 线 环 用shape绘制SeekBar 最后 Chronometer和CountDownTimer计时器 Android也是提供了计时器的, 虽然功能比较简单, 但是有些场景下也还是够用的...吗?(手动滑稽) CountDownTimer是倒计时计时器. Chronometer的话, 看怎么用了, 正着倒着都行...吗?(再次滑稽) Chronometer的使用 礼貌性给下官方文档. 然后上效果图: Chronometer的使用 mTimer.setBase(-60000 + SystemClock.elapsedRealtime()); mTimer.setCountDown(false); mTimer.start(); 我们以+1m(也就是从1分钟开始计时)为例: 先看xml代码, android:forma...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7设置SWAP分区,小内存服务器的救世主
- Hadoop3单机部署,实现最简伪集群
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题