html调用deeplink,如何优雅地从浏览器打开本地应用deeplink

本文介绍了如何使用HTML调用DeepLink实现从浏览器优雅地打开本地应用。首先讲解了Android中Intent的显式和隐式跳转,然后详细阐述了自定义scheme以注册URL,使得浏览器能识别并打开应用。接着提出了在不同场景下的问题,如从浏览器打开应用后按HOME键再点击图标、返回键操作以及多级页面的返回路径。最后,通过设置`android:allowTaskReparenting="true"`和巧妙的Activity管理,解决了这些问题,实现了类似知乎的浏览器打开应用体验。
摘要由CSDN通过智能技术生成

相信Android开发者都会知道,在应用内跳转页面,我们肯定会用到 Intent。使用 Intent 跳转页面有显式跳转和隐式跳转两种方式。

Intent intent = new Intent();

intent.setClass(this, MainActivity.class);

startActivity(intent);

典型的显式跳转就如同上面的代码一样,如果需要携带数据的话,我们也有两种方式。一方面我们可以调用 Intent 的 putExtra 系列方法,通过键值对的方式把数据传递过去。Intent 支持传递的数据包括基本类型数据、字符串、序列化以及各自的数组,有意思的是 Intent 支持 Parcelable数组 但不支持 Serializable数组。然后在跳转的页面通过相应的 get方法 把数据拿出来即可。

另一方面,我们也可以用 Intent 的 setData方法 将统一资源标识符Uri传递过去,然后在接收端解析 Uri 来拿出数据。对于一个 Uri,主要由以下几部分组成:

scheme://host:port/path?query

相应地,我们便能从 Uri 中把各个部分的信息拿出来。

而隐式跳转则是通过 Intent 的 action 来实现。典型的便是我们在桌面点击了应用的图标,然后应用启动进入我们的第一个页面。相信大家都知道对于应用自动的第一个页面,我们在 AndroidManifest.xml 文件中对 Activity 注册时,会有这么一段代码。

0818b9ca8b590ca3270a3433284dd417.png

实际上应用从点击图标到启动第一个页面的过程相当复杂,如果大家有兴趣的话可以去看老罗的博客:

Android应用程序启动过程源代码分析

http://blog.csdn.net/luoshengyang/article/details/6689748

从源代码的分析来看,桌面图标保存了相应应用的启动 intent,该 intent 保存了 AndroidManifest.xml 的信息。因此我们自定义隐式启动页面时,只需要在 AndroidManifest.xml 中相应的 Activity 配置相应的 action 信息,然后调用的时候设置相应的 action 便可启动相应 Activity。

比如我们之前开发应用时,想要调用系统拨打电话应用,我们并不知道拨打应用 Activity 的具体信息,所以只有通过隐式方式来调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值