怎么在android实现通过浏览器点击链接打开apk

标签: android 浏览器 apk | 发表时间:2015-08-28 02:28 | 作者:iaiai
出处:http://www.iteye.com
android实现通过浏览器点击链接打开本地应用(APP)并拿到浏览器传递的数据

为了实现这个功能可折腾了我好久,先上一份代码,经楼主验证是绝对可以用的而且也比较清晰的代码!(ps:还是先剧透下吧,第三方大部分浏览器无法成功。)
点击浏览器中的URL链接,启动特定的App。
首先做成HTML的页面,页面内容格式如下:
<a href="[scheme]://[host]/[path]?[query]">启动应用程序</a>
这一句就可以了。
各个项目含义如下所示:
scheme:判别启动的App。 ※详细后述
host:适当记述
path:传值时必须的key     ※没有也可以
query:获取值的Key和Value  ※没有也可以

作为测试好好写了一下,如下:
<a href="myapp://jp.app/openwith?name=zhangsan&age=26">启动应用程序</a> 
接下来是Android端。
首先在AndroidManifest.xml的MAIN Activity下追加以下内容。(启动Activity时给予)
※必须添加项
<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:scheme="myapp" android:host="jp.app" android:pathPrefix="/openwith"/> 
</intent-filter>
HTML记述的内容加入<data …/>。
其中必须的内容仅scheme,没有其他内容app也能启动。
※注意事项:intent-filter的内容【android.intent.action.MAIN】和 【android.intent.category.LAUNCHER】这2个,不能与这次追加的内容混合。
                 所以,如果加入了同一个Activity,请按以下这样做,否则会导致应用图标在桌面消失等问题。
复制代码
<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:scheme="myapp" android:host="jp.app" android:pathPrefix="/openwith"/> 
</intent-filter>
复制代码
这样的话,没有问题。

接下来在Activity中需要取值的地方添加以下代码,我是直接写在OnCreate函数里的:
Intent i_getvalue = getIntent(); 
String action = i_getvalue.getAction(); 
 
if(Intent.ACTION_VIEW.equals(action)){ 
    Uri uri = i_getvalue.getData(); 
    if(uri != null){ 
        String name = uri.getQueryParameter("name"); 
        String age= uri.getQueryParameter("age"); 
    } 
}
这样就能获取到URL传递过来的值了。
——————————————————————————————————我是分割线————————————————————————————————————
代码copy完了,是不是很惊奇的发现用浏览器输入
myapp://jp.app/openwith?name=zhangsan&age=26
是不是404,打不开?
楼主你这不是骗人么!楼主你个混蛋啊。
客官,稍安勿躁啊,你看看你用的浏览器是什么?UC,猎豹,欧朋?放弃吧,试试系统自带浏览器或者谷歌浏览器吧。肯定能成功的,不能成功的话再来坑我。哈哈。
——————————————————————————————————我是分割线————————————————————————————————————
突然觉得好悲哀,好不容易get了这个技能,却不能被第三方浏览器使用。在这个android浏览器大部分被第三方占据着的时代不得不说是个悲剧啊。
接下来还是说说为什么第三方浏览器不能成功吧。首先,我发现的是UC浏览器,如果你使用了自己的scheme,而不是http的话,uc会默认在你的scheme前面添加http://。这太坑爹了。其他浏览器没看是不是同样的情况。发现这个问题后我就试着把自己的scheme换成http。然后满怀期待的又跑了一遍,结果还是坑爹了。所以我想会不会是第三方浏览器对url做了处理。到这里,我也无可奈何了。我测试了UC,猎豹,欧朋,这3个都不支持。系统自带的和谷歌浏览器是支持的。
最后再补充个线索吧,在浏览器里搜索百度应用。进了他们的页面后,他们是可以实现在各种浏览器启动已经安装好的本地app的。看到这个后我就看了下他们页面的源码。
在这里他们页面添加了个data-sentintent的标签,看到这里,应该能确定第三方浏览器应该是默认都不支持发intent的,只能自己起一个。根据前端说,这个标签应该是自定义的。我们前端看源码的时候发现是这样的
所以最后的结果应该是百度这边是起了个端口,然后在应用里启用了一个服务,来监听这个端口,来获取这个intent。大概就这个思路了。不过楼主没有实际去操作。项目时间紧,太麻烦了。

已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [android 浏览器 apk] 推荐:

怎么在android实现通过浏览器点击链接打开apk

- - 移动开发 - ITeye博客
android实现通过浏览器点击链接打开本地应用(APP)并拿到浏览器传递的数据. 为了实现这个功能可折腾了我好久,先上一份代码,经楼主验证是绝对可以用的而且也比较清晰的代码. (ps:还是先剧透下吧,第三方大部分浏览器无法成功. 点击浏览器中的URL链接,启动特定的App. 首先做成HTML的页面,页面内容格式如下:.

android apk反编译

- - CSDN博客推荐文章
3.查看Jar包的GUI工具. apk文件其实就是一个MIME为zip的压缩包,可以用winrar软件打开看到里面的文件结构. 解压缩后找到里面的classes.dex文件,classes.dex文件就是java文件编译再通过Dalvik须立即提供的dx打包工具打包而成的,接下来就用2个工具来逆向导出java源文件.

Android APK反编译详解(附图)

- jason - iGFW
一、反编译Apk得到Java源代码. 首先要下载两个工具:dex2jar和JD-GUI. 前者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源代码. 首先将apk文件,将后缀改为zip,解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的;解压下载的 dex2jar,将classes.dex复制到dex2jar.bat所在目录.

HP TouchPad 灵魂不死,Android 附身且带 APK 应用安装

- 品味视界 - Engadget 中国版
惠普的 TouchPad 已经 Android 附身好几次了,不过这次来的有点不同,开发者来自中国,同时是在 WebOS 上调用 Android 系统了. 整个系统通过 .ipk 文件完成安装,整个操控还算流畅,虽然有时候切换主屏和应用程序(比如 Youtube 视频)会感到停顿. 安装应用需下载想要的 apk 文件,放到 U 盘的 apks 目录,进入系统之后就可以发现并安装.

教你用电脑从 Google Play 下载 Android 程序 apk 文件

- - 小众软件 - Appinn
APK Downloader 是一款帮助你用电脑从 Google Play (原 Android Market ) 下载 Android 应用程序 apk 文件的 Chrome 扩展. Ivan 同学在 Group 讨论组 里推荐了一个用电脑从 Google Play 里下载 Android 程序的方法,可以直接下载到 apk 文件.

Android 命令行编译、打包生成apk文件

- - CSDN博客移动开发推荐文章
安装JDK 和 Android SDK. 项目目录:D:\ProjectDemo. SDK目录 :D:\android-sdk-windows\platforms\android-8\. 二、命令行编译Android项目. Java代码生成class文件. aapt命令, 生成R文件. -f 如果编译生成的文件已经存在,强制覆盖.

(搬运工)Android APK反编译详解(附图)

- - C++博客-首页原创精华区
这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程. 在此郑重声明,贴出来的目的不是为了去破解人家的软件,完全是一种学习的态度,不过好像通过这种方式也可以去汉化一些外国软件. 本文Android反编译教程,测试环境:.

Android使用Ant进行apk多渠道打包

- - 移动开发 - ITeye博客
关注微信号:javalearns   随时随地学Java. 详细介绍请看http://ant.apache.org/. 总之一句话:Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能. android sdk中默认支持使用ant来执行编译动作. 但是要想使用ant来进行编译,还需要ant的执行环境.

Android中的Apk的加固(加壳)原理解析和实现

- - CSDN博客推荐文章
今天又到周末了,憋了好久又要出博客了,今天来介绍一下Android中的如何对Apk进行加固的原理. 我们知道Android中的反编译工作越来越让人操作熟练,我们辛苦的开发出一个apk,结果被人反编译了,那心情真心不舒服. 虽然我们混淆,做到native层,但是这都是治标不治本. 反编译的技术在更新,那么保护Apk的技术就不能停止.

【腾讯Bugly干货分享】Android减包 - 减少APK大小

- - CSDN博客移动开发推荐文章
本文是对Google官方文档 Reduce APK Size 的翻译,点击“阅读原文”可以查看英文原文. 译者简介:damonxia(夏正冬),天天P图Android工程师. 用户经常会避免下载看起来体积较大的应用,特别是在不稳定的2G、3G网络或者在以字节付费的网络. 这篇文章描述了怎样减少你的APK大小,这会让更多的用户愿意下载你的应用.