阅读 345

Android 外部URL跳转到APP的操作

最近公司有了一个需求,外部链接要能开发本地的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的具体含义

一个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的路径跳转到不同的界面。也算是一种方案!!!

今天就到这里吧!好久不写博客了,感觉自己真的是懒癌患者! 其实也不知道写什么,所以就记录每天开发中的内容吧!哈哈。。。

关注下面的标签,发现更多相似文章
评论