转载请注明作者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

从h5调起原生APP到自己调起知乎页面相关推荐

  1. 随笔集:H5如何对接原生app的方法

    H5如何对接原生app的方法 原生APP内部嵌入H5页面的场景对于web前端来说可能并不陌生,既然是嵌入在APP内部肯定也少不了会涉及到APP和H5的一些交互.比如传参.H5调用APP方法.APP调用 ...

  2. vue h5 页面调起原生APP指定页面

    这次分享可能比较适合小白,大神们多多指教哈!为什么这么说呢,因为我之前都是做pc,或者小程序.rn 什么的,原生app内嵌h5这种还是第一次. 最近提了个需求:app下载页 如果当前应用已经安装就直接 ...

  3. H5如何与原生App(ios,安卓,RN)通信?

    关注前端公众号 前端每日一博,每日为你分享一篇前端系列博文.永不断更! 前言 为了提高开发效率,开发人员往往会使用原生app里面嵌套前端h5页面的快速开发方式,这就要涉及到h5和原生的相互调用,互相传 ...

  4. 鸿蒙出来后H5足以取代原生app

    本地模式的H5渲染效果,其实已经在性能上无限接近于原生.也就是说当你使用file://而非http://访问H5页面的时候,打开速度也是非常快的. 而且现在安卓和ios里面,提供了js访问原生代码的能 ...

  5. 混合开发中,H5页面与原生app交互(方法互相调用与传参)

    H5与原生app交互,需要WebViewJavascriptBridge,废话不多直接上代码,下面是项目中的封装bridge.js的全部代码(示例代码为vue) //iOS 交互声明 function ...

  6. 移动原生App开发和HTML 5开发,你更看好哪个?

    小程序的发布,让我们不得不思考,移动原生App开发和HTML 5开发,哪个更有优势? 在技术的发展上,HTML 5会取代App应用吗? 你更看好哪个? 经常会有人问"APP开发究竟是用原生的 ...

  7. iOS原生App与H5页面交互 离线缓存 笔记

    //webview每次加载之前都会调用这个方法,利用该代理方法截取JS的href来调用原生的方法- (BOOL)webView:(UIWebView*)webView shouldStartLoadW ...

  8. h5做的app和原生app的区别

    之所以说h5做的app和原生app的区别,是因为一位博友的问题: 随着 h5 的普及,是不是不再需要开发 app ? 我的回答是要分业务需求,分场合而定. 比如现在的微信小程序这么流行,甚至也取代了不 ...

  9. H5开发的web APP和原生APP的区别

    H5开发的web APP和原生APP的区别有以下几个方面:一.开发方面 原生App ⊙ 每一种移动操作系统都需要独立的开发项目⊙ 每种平台都需要独立的开发语言.Java(Android), Objec ...

最新文章

  1. 《深入理解计算机系统》读书笔记六:整数表示
  2. java中向JTextArea中添加滚动条(垂直的和水平的)
  3. VTK:Points之PowercrustExtractSurface
  4. CentOS 7 源码编译MariaDB 5.5.46
  5. ConcurrentHashMap 解读
  6. DB Reindex
  7. C#LeetCode刷题之#706-设计哈希映射(Design HashMap)
  8. RTT的IPC机制篇——信号
  9. 软件工程导论 四则运算
  10. sql语句中having的用法
  11. NQueen问题(N皇后问题Java)
  12. 洛谷 P2184 贪婪大陆
  13. HashMap的put过程
  14. js判断指定日期是礼拜几
  15. Exp9 Web安全基础 20164302 王一帆
  16. java获取中文的拼音以及获取中文拼音的首字母
  17. x86-64平台栈帧结构与ARM64栈帧结构对比
  18. 雷军手机使用时长曝光!一天刷抖音、微博、微信,办公仅34分钟
  19. NVR如何设置警前警后录像时间
  20. Btspread Search Assistant的开发过程

热门文章

  1. 初识qml——PathView QQmlContext c++类与qml的数据交互
  2. camtasia 视频录制教程
  3. 微信小程序/安卓APP丨ssm图书借阅到期提醒功能实现
  4. sql 中exist用法
  5. Python实现自动人像抠图(小白也能学会)
  6. python人像美颜_python 人像抠图
  7. 小米手机MIUI11带有3个实用小功能,与家庭相关,保护家人安全
  8. 变步长梯形求解微分方程
  9. tracert与pathping
  10. Clayman 游戏程序员养成计划