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

标签: android 浏览器 链接 | 发表时间: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 浏览器 链接] 推荐:

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

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

QQ 浏览器(android) 设计之路

- goochin - 所有文章 - UCD大社区
经过几个月的时间和大家的努力,手机QQ浏览器(android版)从 2.0 陆续更新到的 2.6. 在经历了设计的千回百转和架构的不断尝试后,终于有了个新面貌,使用体验也比之前版本有了较大提升. 不过,这也仅仅是万里长征第一步,这里先和大家分享下这第一步背后的设计心得. 我们可以先来了解国内局势. 目前,浏览器市场可谓战火不断,狼烟四起.

Google 发布 Android 版 Chrome 浏览器,只支持 Android 4.0

- - 36氪
今天 Google 正式对外发布了 Android 平台上的 Chrome 浏览器,但是只支持最新的 Android 4.0 系统. 这意味着未来 Android 手机上默认的浏览器将被 Chrome 取代. Chrome/Android 问题已经有很长时间,这两个产品都是在 2008 年 9 月发布(但是之前已经有 Android beta 版本).

android中的自动链接

- - CSDN博客推荐文章
    下面和大家分享一下android中的自动链接,也就是android系统会自动识别我们文本中的网址,电话号码,邮箱地址,当我们点击的时候会自动打开浏览器,自动启动拨号程序,自动打开发送邮件的程序. 这么神奇的效果是怎么实现的呢.         //设置自动链接url,邮箱,电话号码. 由于模拟器不自带邮件客户端,所以自动链接邮箱的效果看不到,真机上就可以了.

Tabulate!,快速分享整个Chrome浏览器正在浏览的网页链接

- Jacky - Chrome迷
将目前正在浏览的一个网页迅速做成短url并且分享给好友,貌似这扩展我们以前介绍过. 是一枚可以快速的保存你目前正在Chrome上浏览的所有标签的网页地址,做成指定的url,并在这个url页面上显示出你正在浏览哪些网页的Chrome扩展. 如果你和我一样,习惯一下开10多个页面,当我使用 Tabulate! 后,可以迅速的将这十多个网页链接做成一个url地址,分享到社交网站.

Google计划开发开源WebKit内核Android浏览器

- CarlNERV - GeekPark 捕风捉影
Google员工透露,Android团队现在开始加强与WebKit社区的合作. 它们准备开发一款采用WebKit内核的开源Android浏览器. Android有单独的浏览器,只是不叫Chrome,但二者共享了一些代码. 不过它们是由两个团队分别开发的. 由于某种原因,Google选择不将Android上的浏览器称为Chrome,这可能是为了避免与Chrome OS混淆.

欧朋浏览器6.2 For Android/Symbian/Java发布更新

- 洞箫 - cnBeta.COM
新一代浏览器界面,简约、精致、时尚,摆脱拥挤,复杂的手机浏览器界面,打造个性化的浏览器. 快速拨号“快速拨号”将喜欢的网站添加到首页,实现一键点击访问. 通过定制“快速拨号”,你可以打造一个个性化的浏览器首页. 体积小巧、功能强大,欧朋浏览器结合了强大的内核和领先的云端转码技术,可使手机访问网站速度提升5到10倍,使上网流量节省最高达90%.

针对Android 平板的海豚浏览器正式版推出

- - 雷锋网
海豚浏览器正式发布了Android平板版 v1.0,支持Android 3.2以上系统. 海豚浏览器此前曾推出Android Pad测试版,但Android从3.2版本才开始广泛支持平板电脑,并向各大平板电脑制造商推出. 现在,海豚浏览器推出的正式版能让Android平板实现和iPad上一样的浏览体验.

Android--Intent常用(拨号,浏览器,联系人,Wi-Fi)

- - CSDN博客移动开发推荐文章
//拨号代码,需要在AndroidManifest.xml文件中加入 拨打电话权限. //将电话号码传入拨号程序的代码. //调用系统浏览器浏览网页的代码. //调用系统程序查看联系人的代码. //显示系统设置界面的代码. //显示Wi-Fi设置界面的代码. 作者:zlQQhs 发表于2013-2-21 22:42:57 原文链接.