您的位置:首页 > 移动开发

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

2017-01-10 18:14 357 查看
转载请注明作者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中获取输入参数:

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息