微信分享、QQ分享的链接唤醒 APP 并跳转到指定页面
要从网页唤醒 APP ,需要在清单文件中对唤醒的具体 Activity 做配置(一般是主页面),我这里是 MainActivity,如下图所示:
port、path属性都不是必须的,注释掉的那一行就是网页端用来唤醒你的 APP 的协议格式。后面 id 和 code 是参数。点击下载后会先检测是否已安装了 APP ,是则直接打开 APP,并根据协议跳转到对应页面。下面是实现的最终效果。
接收协议的只配置了 MainActivity,那么怎么实现跳转到特定商品页面呢?这就需要在 MainActivity 中去解析协议,取出参数,根据参数来进行相应的跳转。type 和 id 就是协议中的参数,参数可以跟后台协商好什么参数。获得这两个参数后根据自己的需求来进行后续的操作。
期间我还遇到了一个问题,就是如果 APP 是已经处于打开状态了,那么我的跳转到商品的代码是已经执行过了,此时再从浏览器唤醒 APP 只会停留在 MainActivity 界面,并不会跳转到我的商品,一开始我的解决方法是在 onResume() 方法中再获取一次协议去进行跳转,但就导致了我的回退和返回都会执行到这一段代码,造成了死循环。目前解决方法是使用 registerActivityLifecycleCallbacks 来监听此时 APP 是否从后台回到前台,即从浏览器跳转过来的,是则获取协议进行跳转。
在 Application 中定义下面的方法,实现监听,并在 onCreate() 方法中调用。
我会使用 instanceof 关键字判断是否跳转到的是 MainActivity 界面,是的话则进行我需要的操作。
此方法参考自博客:https://blog.****.net/YllP_1230/article/details/82620443
自此,我的问题得到解决。希望这篇博客也可以帮助到跟我一样的小白。