从h5调起原生APP到自己调起知乎页面

版权声明:转载请著名AndroidMsky和原文链接。 https://blog.csdn.net/AndroidMsky/article/details/54316327

转载请注明作者AndroidMsky和出处:
http://blog.csdn.net/AndroidMsky/article/details/54316327

效果:

这里写图片描述

这篇算兴趣加技术篇,和之前的抢红包博文和接起QQ电话博文一样都是往其他APP里面搞事情!!!

这里写图片描述

代码传送门:

https://github.com/AndroidMsky/htlmStartApp

我们知道比如知乎,大众点评等一些h5的网页是可以直接调起原声应用的,有一些亲儿子可以在微信的内置浏览器中直接搞出来。下面介绍一下最最最基础的调用方法吧。

在activity的静态声明中:

<activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>

            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data
                    android:host="host"
                    android:scheme="scheme" />
            </intent-filter>
        </activity>

主要是host 和scheme这两个参数,自己起个名字就好了,不过scheme不要起http https这种关键字的名字会让浏览器瞬间懵逼的。

然后再activity中获取输入参数:

扫描二维码关注公众号,回复: 3803166 查看本文章
Intent intent = getIntent();
        if (intent != null) {

            String data = intent.getDataString();

            if (data != null) {
                Toast.makeText(this, data, Toast.LENGTH_LONG).show();
            }
        }

可能还有更细致的获取方法就不再赘述了。

APP这里就准备好了,然后就要在html5中搞事情了,其实很好搞,移动端工程师具备一定的html知识是必不可少的。

<a href="scheme://host/dhahahh”>启动我们的应用程序</a> 

一个a标签就可以搞事情了。

这里写图片描述

看到我们点击我们的A标签我们自己的程序启动了,并且读取到我们输入的参数了。如果是在项目中就可以做相应处理了。

好了,这不是搞事情,我要跟知乎一起搞事情(虽然之前仿知乎嵌套滑动搞过一次了),好吧,我第一反应就分享出一个知乎的链接,然后用chrome去审查元素:

这里写图片描述

在APP内打开是个button,并没有直接给上链接,因为知乎做了更多的东西,比如你没安装知乎,他会跳转到知乎app的下载页面。所以不是一个标签中的href那么简单,好吧那么就去js中找到这个button绑定的方法(请允许安卓工程师大胆想象)。使出我吃奶的前端技术栈,按照那个button的class去搜索一下吧

这里写图片描述

确实在这附近,但是我觉得继续研究这端js我要毁一生了,前端汪你们上我先撤退了。

转移思路吧,接受这种调起activity的参数,不是在Manifest.xml中定义的么,那我就不怕了,直接下个知乎apk反编译看一下就好了。于是下了apk,并直接拖入AS的界面中(向强大的AS致敬):
配合显示当前页面activity的命令

adb shell dumpsys activity | grep "mFocusedActivity"

搜索关键词scheme我们很容易找到接受参数的位置:

这里写图片描述

事实就是这么的简单,我们找到了相应的参数,接下来写h5代码就好了:

<a href="zhihu://questions/53799426">启动知乎</a>

随便找了个问题就调了起来:

这里写图片描述

成功调起并传参。

(这些html都是用浏览器打开的哈)

附上完整html:

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8"> 
<title>AndroidMsky</title> 
</head> 
<body> 
<p>启动原声应用</p>

<a href="zhihu://questions/53799426">启动知乎</a>

<a href="scheme://host/dhahahh">启动我们的应用程序</a> 

</body>

</html>

说几句鸡汤,如果你是一个对编程感兴趣的人其实程序的世界有很多玩耍的东西,可以做游戏,可以写自动化的东西等等。如果你对写代码已经十分厌烦,不妨去接触一下有趣的东西,大家一起搞搞事情。可能你当年对程序那种热情会回来的。说我们是码农也好说我们是猿类也罢,我们自己搞好玩的事情,自娱自乐谁能挡我,大喊一声还有谁~。

欢迎关注作者。欢迎评论讨论。欢迎拍砖。
欢迎star,Fork我的github,喜欢的也可以Follow。也算对作者的一种支持。

本文Github代码链接

https://github.com/AndroidMsky/htlmStartApp

欢迎加作者自营安卓开发交流群:

308372687

这里写图片描述

猜你喜欢

转载自blog.csdn.net/AndroidMsky/article/details/54316327