最近公司有了一个需求,外部链接要能开发本地的APP的操作!我觉得这种操作其实用处挺大的,反正之前我看很多APP都有这个功能,所以就仔细研究了一下,发现实现起来还是很简单的!
本文知识点
- 通过外部URL打开本地app
- 获取传递的相应内容
首先我们需要明确的是,移动端都应该做些什么?我们应该和前端定义好相应的请求头部!只要确定好这个头部就能实现跳转了,最开始我也是这么做的!之后在说为什么我需要改?
这里先来一个简单的h5页面,因为我不是前端开发,所以这里就来个最简单的!代码是这样的!
<html>
<meta charset="UTF-8">
<body>
<h1>Test Scheme</h1>
<!--手动点击跳转-->
<a href="test://splash/mypath?content=从html页面传过来的值">点击跳转APP并传值</a>
</body>
</html>
复制代码
准备工作都已经做完了,那么上下的就是我们的事情了!
1. 通过外部URL打开本地app
首先我们要理解一个URL的具体含义
有了这个那就好说了!当我们隐式启动Activity的时候,都需要配置相应的 intent-filter 当你配置这个东西的时候一定会设置相应的属性,那么这个东西就更好说了!
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="test" />
<data android:host="splash" />
</intent-filter>
复制代码
这里的test是和服务器约定好的内容,也就是scheme中的字段。其实通过以上代码,就可以解决相应的跳转问题了!但是我一直在想一个问题,为什么需要自己定义scheme这个字段,为什么不直接用http或者https呢?最后我发现其实也是可以的!
2. 获取传递的相应内容
关于获取传递内容的方案啊!其实就是从uri中获取相应的参数而已。这里就直接上代码吧!
Intent intent = getIntent();
if (intent != null) {
//获取整个uri的链接
String dataString = intent.getDataString();
//获取相应Uri中的一些内容!
Uri data = intent.getData();
String scheme = data.getScheme();
String authority = data.getAuthority();
String host = data.getHost();
String port = String.valueOf(data.getPort());
String path = data.getPath();
String query = data.getQuery();
}
复制代码
这里可以获取任何uri中的内容,这里提一嘴,如果你在闪屏页处理这里的逻辑,可以根据path或者port的路径跳转到不同的界面。也算是一种方案!!!
今天就到这里吧!好久不写博客了,感觉自己真的是懒癌患者! 其实也不知道写什么,所以就记录每天开发中的内容吧!哈哈。。。