android uri跳转,Android Scheme的跳转协议,跳转到app的指定页面_河星星的博客-程序员秘密

技术标签: android uri跳转  

Scheme协议

Android中的Scheme是一种页面内跳转协议,通过自定义Scheme协议,可以跳转到app中的任何页面

服务器可以定制化跳转app页面

app可以通过Scheme跳转到另一个app页面

可以通过h5页面跳转app原生页面

定义协议的格式

Uri.parse("cheu://tests:92/goods?goodsId=8897&name=fuck");

chen代表Scheme协议名称

test代表Scheme作用的地址域

8080代表改路径的端口号

/goods代表的是指定页面(路径)

goodsId和name代表传递的两个参数

Scheme使用

定义一个Scheme

bd61a0c5c60116b538bf825c90cb7538.png

获取Scheme跳转的参数

Uri uri = getIntent().getData();

if (uri != null) {

// 完整的url信息

String s = uri.toString();

sb.append(s + "\n");

// scheme部分

String scheme = uri.getScheme();

sb.append("scheme=" + scheme + "\n");

// host部分

String host = uri.getHost();

sb.append("host=" + host + "\n");

// 访问路劲

String path = uri.getPath();

sb.append("path=" + path + "\n");

//port部分

int port = uri.getPort();

sb.append("port=" + port + "\n");

// Query部分

String query = uri.getQuery();

sb.append("query=" + query + "\n");

//获取指定参数值

String goodsId = uri.getQueryParameter("goodsId");

sb.append("goodsId=" + goodsId + "\n");

//列举所以参数名

Set queryParameterNames = uri.getQueryParameterNames();

tv_scheme.setText(sb.toString());

}

调用方式

1. 原生调用

ee7ffce2a0eff7bf3ccf13e8cb380dcd.png

2. html调用

打开详情

判断某个Scheme是否有效

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("qh://test:8080/goods?goodsId=8897&name=fuck"));

List activities = getPackageManager().queryIntentActivities(intent, 0);

boolean isValid = !activities.isEmpty();

if (isValid) {

startActivity(intent);

}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_35936191/article/details/117581206

智能推荐

Spring Boot常用注解_柯南二号的博客-程序员秘密

Spring Boot常用注解@Service:注解在类上,表示这是一个业务层[email protected]:注解在类上,表示这是一个控制层[email protected]:注解在类上,表示这是一个数据访问层[email protected]:注解在类上,表示通用bean ,value不写默认就是类名首字母小写@Autowired:按类型注入.默认属性required= true;当不能确定 Spring 容器中一定拥有某个类的Bean 时, 可以在需要自动注入该类 Bean 的地方可以使用@A

萌新微信小程序成长-1(封装自定义tabbar)_笑啊笑的博客-程序员秘密

//app.json "tabBar": { "backgroundColor": "#ffffff", "color": "#888888", "selectedColor": "#888888", "list": [ { "pagePath": "pa

【USACO 2020 US Open Bronze】Cowntact Tracing 题解_zhy_Learn的博客-程序员秘密

题目描述由于高传染性的牛传染病 COWVID-19 的爆发,Farmer John 非常担忧他的奶牛们(编号为 1…N)的健康。最近,Farmer John 对他的所有奶牛进行了检测,发现有一部分奶牛对该疾病的检测结果呈阳性。利用牛棚内的视频监控,他得以查看最近的奶牛之间的互动行为,结果发现奶牛们互相打招呼时,她们会握蹄,不幸的是这是一种会将疾病从一头奶牛传播给另一头奶牛的行为。Farmer J...

Linux更新源、安装相关包、相关排错_Jeson卡的博客-程序员秘密

Linux更新源、安装相关包、相关排错本文是我的第一篇技术博客,无任何亮点,仅为学习笔记和[Linux萌新使用者][6]更新。Liunx相关家族以及区别【简陋版】ubuntu下更新源安装需要的包遇到的问题[已解决]我自己依然没有解决的问题(个人对源的一些理解)Liunx相关家族以及区别【简陋版】目前我所接触的有两大家族:debian家族 Ubuntu、Debian等RedHat家族

ASP.NET获取服务器信息-NET编程_lile0920的博客-程序员秘密

ServerOS = Environment.OSVersion.ToString(); //操作系统: CpuSum = Environment.GetEnvironmentVariable("

车载导航不支持播放全部的mp3音乐的解决办法--------fwqlzz love is for ever_小兔子的馒头的博客-程序员秘密

提车装载4s店导航卡仕达帮手支持cdminiSD卡也有u盘接口但最发现有些歌曲支持播放同样mp3格式后来网友有说因为比特率于128kBmp3部分导航支持可能需要去升级导航固件如果无法升级导航固件可以修改mp3比特率让他们比特率符合导航要求(导航音质这个速率也听出啥差别来)如果批量修改歌曲比特率1载格式工厂软件2选择>>mp3

随便推点

file_put_contents以及file_get_contents的用法与在使用过程中遇到的问题(PHP学习)_weixin_30341735的博客-程序员秘密

对数据的操作最基本的是增删改查,file_put_contents以及file_get_contents是对文件里的数据进行存入与取出。先上代码:<?php $str = 'hello world';if(file_put_contents('01.txt',$str)){ echo '数据存入成功','<br />';}else{ echo ...

select2插件使用心得_chasteSui的博客-程序员秘密

select2是一款基于jquery的功能丰富的下拉列表插件。可以实现带搜索框、多选标签等功能。使用时只需要引入jQuery文件和select2.js、select2.css文件即可。初始化 基础下拉使用标签。<!DOCTYPE html><html> <head> &a

《程序员的自我修养》读书笔记---01_LOONGSE的博客-程序员秘密

计算机内部结构很复杂,但是毕竟是人发明出来的,只要花了足够的时间,了解内部结构还是不成问题的。了解的越多,越能发现前人的思维多么的奇妙,一个看起来普通的浮点数格式,当你去自习思考的时候,才知道用原码表示尾数,使用补码表示阶码等充分的发挥了它们的特性与优点。作为高级语言程序员,我们并不需要了解太多的内部结构,在计算机的内部,一个简单的计算机模型主要包括以下三个部件:中央处理器CPU(寄...

Qt遍历目录下文件_weixin_30861797的博客-程序员秘密

QStringList addSubFolderImages(QString path){ //判断路径是否存在 QDir dir(path); if(!dir.exists()) { return QStringList(); } //获取所选文件类型过滤器 QStringList filters...

【数据结构】堆栈(顺序栈、链栈)的JAVA代码实现_Yngz_Miao的博客-程序员秘密

堆栈(stack)是一种特殊的线性表,是一种只允许在表的一端进行插入或删除操作的线性表。表中允许进行插入和删除操作的一端称为栈顶,最下面的那一端称为栈底。栈顶是动态的,它由一个称为栈顶指针的位置指示器指示。当栈中没有数据元素时,为空栈。堆栈的插入操作称为进栈或入栈,堆栈的删除操作称为出栈或退栈。栈的主要特点是“后进先出”,即后进栈的元素先被处理。因此,栈又被称为后进先出(last in fir...

《Windows内核编程》---WDM驱动程序的基本结构和实例_erin45的博客-程序员秘密

WDM驱动的基本结构:WDM驱动模型是建立在NT式驱动程序模型基础之上的。对于WDM驱动程序来说,一般都是基于分层的,即完成一个设备的操作,至少要由两个驱动设备共同完成。 1)物理设备对象和功能设备对象物理设备对象(Physical Device Object,PDO)和功能设备对象(Function Device Object,FDO)的关系是“附加”与“被附加”的关系。当P

推荐文章

热门文章

相关标签