文档章节

Android 自定义scheme及多端唤起使用方法

所谓向日葵族
?所谓向日葵族
发布于 前天 19:04
字数 760
阅读 6
收藏 0

前言

DeepLink,深度链接技术,类似于web开发领域不仅仅是通过链接打开一个界面,而是打开界面的某个具体内容。常用于web端唤起app时,传递参数直接打开确定的界面,如通过京东的分享出去的商品详情页,实现在京东app中打开。

在移动开发领域,是指app在处理特定的url时能够直接跳转到对应的内容页面或者触发特定的逻辑。这样可以在web端切换app时通过参数传递保留了当前的上下文状态,又可以借用web端的优势,更利于传播,可利用搜索引擎的索引,增加app的日活和下载量等。

移动端实现deeplink于是就有了Universal Link、App Link、URL schemes等

Android配置scheme

如配置WebActivity完整的打开链接为openapp://test:8000/detail,需要在AndroidManifest.xml配置


    
        

        
        
        
        
        
    

协议部分:(类比于http://locahost:8080/home)

  • android:scheme:协议名,类似于http
  • android:host:主机名,类似于locahost
  • android:port:端口名。类似于8080中的端口
  • android:path:路径名,类似于home
  • 还可以配置imei等等。结构为://:/[||]

Android端调起

通过指定Intent的Action为Intent.ACTION_VIEW,传入解析的Uri

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("openapp://test:8000/detail?title=电视影音&url=https://u.jd.com/1dfFwO"));
startActivity(intent);

传递参数的方法跟web端一样,通过问号?分隔,参数名和值之间使用等号=连接,多个参数之间使用&拼接。

Android端参数接收

Uri uri = getIntent().getData();
if (uri != null) {
    // 完整的url信息
    String totalUrl = uri.toString();
    Log.i(TAG, "完整url: " + totalUrl);
    // scheme 协议
    String scheme = uri.getScheme();
    Log.i(TAG, "scheme: " + scheme);
    // host 主机
    String host = uri.getHost();
    Log.i(TAG, "host: " + host);
    //port 端口
    int port = uri.getPort();
    Log.i(TAG, "port: " + port);
    // 访问路径
    String path = uri.getPath();
    Log.i(TAG, "path: " + path);
    // 获取所有参数
    String query = uri.getQuery();
    Log.i(TAG, "query: " + query);
    //获取指定参数值
    String title = uri.getQueryParameter("title");
    Log.i(TAG, "title: " + title);
    String url = uri.getQueryParameter("url");
    Log.i(TAG, "url: " + url);
}

唤起后可以看见打印的日志信息:

拿到参数之后就可以进行后续的使用操作啦

web端唤起

直接当做一个普通的连接形式,直接跳转

window.location = "openapp://test:8000/detail?title=电视影音&url=https://u.jd.com/1dfFwO";  

或者设置超链接等待用户点击

在app中打开

原文链接

?? 更多好文欢迎关注我的公众号~

公众号

? 着作权归作者所有

所谓向日葵族

所谓向日葵族

粉丝 1
博文 14
码字总数 15488
作品 0
海淀
私信 提问
Android DEPPLINK及APPLink原理简析

APP开发中经常会有这种需求:在浏览器或者短信中唤起APP,如果安装了就唤起,否则引导下载。对于Android而言,这里主要牵扯的技术就是deeplink,也可以简单看成scheme,Android一直是支持sch...

看书的小蜗牛
2018/12/10
0
0
使用URL Scheme/ host/ path/ port调起Android APP

用户在访问我们的网页时,判断出这个用户手机上是否安装了我们的App,如果安装了则直接从网页上打开APP,否则就引导用户前往下载,从而形成一个推广上的闭环。这里只针对从网页端打开本地APP...

desaco
2018/09/01
0
0
Android知识点回顾之Intent/IntentFilter

定义:Intent是一个消息传送对象,可以用它来访问另外一个组件 可以用于以下三个场景: startActivity startService Android 5.0以上可以使用JobScheduler启动 所有版本可以使用: sendBroa...

星泉毅
2017/10/30
0
0
Pro Android学习笔记(十一):了解Intent(中)

Intent的构成 Intent可以带有action,data(由URI表达),extra data(key/value map,键值对),指定的类名(成为component name)。一个intent至少携带上述的一个内容。 Action。Action名,...

simpower
2014/10/04
25
0
从前端的角度出发 - web调起APP的

日常安利自己的Github,如果有错误或者理解不正确的地方,麻烦告知我会及时更正。同时也非常欢迎大家一起讨论。鞠躬。 Github地址:https://github.com/bsxz0604/RemarkForYouDontKnowJs (不...

Xiao呆不糊涂
2018/08/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下三路怎么看BJL路子技巧分享

这游戏看似简单,但是却是概率论的体现,是研究概率随机数量规律的数学分支之一。随机现象明确说明了开什么的概率是决定概~率随机现象而言的。所以在特定的规则产生的现象被称为决定性现象。...

开动者
今天
10
0
EClub 10 月线上分享:私域流量池该怎么搭建;初创项目如何做营销;如何精准劫持竞品流量;创始人必须知道的营销知识,都在这里

EClub 10 月线上分享:私域流量池该怎么搭建;初创项目如何做营销;如何精准劫持竞品流量;创始人必须知道的营销知识,都在这里。 36Kr企服管家 · 2小时前 创业是从资金、产品、技术、运营、...

吴伟祥
今天
11
0
This会根据上下文

?? ??? ??? ??? ??? ??? ??? ?

返回顶部
顶部