资讯专栏INFORMATION COLUMN

Scheme协议详细介绍

tianlai / 1131人阅读

摘要:关于我的博客我的个人站点,知乎简书喜马拉雅听书开源中国泡在网上的日子邮箱阿里云博客头条

目录介绍

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/yangchong2...

可以参考该demo中的AppTool工具app,用aidl通信,还支持scheme协议跳转,挺好玩的!

关于链接

1.技术博客汇总

2.开源项目汇总

3.生活博客汇总

4.喜马拉雅音频汇总

5.其他汇总

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


    
    
    
        
        
        


        
        
        
        
    
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 网页调用

打开叮咚app

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 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/...

简书:http://www.jianshu.com/u/b7b2...

csdn:http://my.csdn.net/m0_37700275

喜马拉雅听书:http://www.ximalaya.com/zhubo...

开源中国:https://my.oschina.net/zbj161...

泡在网上的日子:http://www.jcodecraeer.com/me...

邮箱:yangchong211@163.com

阿里云博客:https://yq.aliyun.com/users/a... 239.headeruserinfo.3.dT4bcV

segmentfault头条:https://segmentfault.com/u/xi...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/76624.html

相关文章

  • Web离线技术(一)—— 技术选型

    摘要:上面提到在安卓完全不需要像这样大费周章的绕弯路,所以安卓可能就不需要这个自定义的,这样又会导致面临着与安卓差异化严重问题。前言 最早接触离线包的概念要追溯到16年初,项目迎来大改版,其中重点项目之一就是离线包方案的制定与实施。离线包顾名思义就是将H5/CSS/JS和资源文件打包提前下发到App中,这样App在加载网页的时候实际上加载的是本地的文件,减少网络请求来提高网页的渲染速度,并实现动态...

    null1145 评论0 收藏0
  • Python3网络爬虫实战---22、使用Urllib:解析链接

    摘要:上一篇文章网络爬虫实战使用处理异常下一篇文章网络爬虫实战使用分析协议库里还提供了这个模块,它定义了处理的标准接口,例如实现各部分的抽取,合并以及链接转换。上一篇文章网络爬虫实战使用处理异常下一篇文章网络爬虫实战使用分析协议 上一篇文章:Python3网络爬虫实战---21、使用Urllib:处理异常下一篇文章:Python3网络爬虫实战---23、使用Urllib:分析Robots协议...

    betacat 评论0 收藏0
  • 怎么在网页中打开你的app

    摘要:很好的一个属性,因为通过这个属性在上我们能够绕过微信的拦截从而打开。微信中打开至此只有微信是打不开的,实际上腾讯系的产品都是打不开的,包括浏览器。简而言之,腾讯的产品中都去借助应用宝这个平台去执行你需要的操作。 先声明一下关于ios中9.0打开方式的文章来自博客:IOS9通用链接(universal link) 前言 对于一个完备的互联网产品而言需要有app端与web端两个不同前端,对...

    SKYZACK 评论0 收藏0

发表评论

0条评论

tianlai

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<