`
wyzxzws
  • 浏览: 380002 次
  • 性别: Icon_minigender_1
  • 来自: dazhou
社区版块
存档分类
最新评论

html页面调用安卓应用

 
阅读更多
今天老大给我提了一个需求叫我调研一下,他已经测试了IOS平台上是可以的,需求很简单就是在系统浏览器中通过输入一个uri就可以打开相应的app。
比如你在IOS中的系统浏览器中输入:tel://123,就会跳到拨打电话页面而且拨打号码是123,像这样的命令,老大他用了小米手机测试了一下,发现可以的,所以他就以为Android的也是可以的,但是当我用三星和htc手机测试发现不行,这时候老大就纠结了,但是我个人认为,我们都知道小米手机是模仿IOS的,没想到模仿的这么想。所以老大就叫我去调研,我查阅了资料之后,找到了解决办法如下
先上一份代码,经楼主验证是绝对可以用的而且也比较清晰的代码!(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。大概就这个思路了。不过楼主没有实际去操作。项目时间紧,太麻烦了。对了,百度这个是有集成他们inapp这个sdk的。
再附上stackoverflow两个相关链接:http://stackoverflow.com/questions/3469908/make-a-link-in-the-android-browser-start-up-my-app
http://stackoverflow.com/questions/2958701/launch-custom-android-application-from-android-browser

 转自:http://blog.csdn.net/jiangwei0910410003/article/details/23940445

 

分享到:
评论

相关推荐

    Android应用源码安卓源码(172个合集).zip

    Android应用源码安卓源码(172个合集),可以做为你的学习参考。 365MobileSecretary v1.0.6(365手机助手AIDL) 888个经典 Logo.rar AdXmpp(Openfire+asmack+spark) .zip AidlDemo(简单aidl的例子) aidl跨进程调用....

    基于Java和HTML的JS调用安卓原生设计源码

    本JS调用安卓原生项目基于Java和HTML开发,包含50个文件,包括XML配置文件、WebP图片、Java源代码、GIT忽略文件、Gradle构建文件、Properties配置文件、Markdown文档、HTML页面和JAR文件。系统界面友好,功能完善,...

    Android开发应用实战详解源代码

    1.1.4 android应用程序框架 1.1.5 android的竞争优势 1.1.6 android模拟器 1.2 搭建android开发环境 1.2.1 准备工作 1.2.2 windows系统下的搭建过程 1.2.3 linux系统下的搭建过程 1.3 常见问题汇总 1.4 使用本书的...

    调用Android WebView 的例子(实现浏览器功能)

    android Sdk 2.3.* 1.实现输入地址,在本应用中浏览网页。 我才学android,这是练习WebView的使用,功能简单,代码清晰。

    framework7, 用于构建 iOS & Android应用程序的全功能HTML框架.zip

    framework7, 用于构建 iOS & Android应用程序的全功能HTML框架 Framework7 用于构建 iOS & Android应用程序的全功能移动HTML框架正在启动获得开始指南克隆/下载这里 repo从更改厨房接收器开始构建应用程序,或者使用...

    app-call:两个Android应用程序和Web应用程序之间的通信-Android应用程序

    应用调用应用程序调用是一个演示,用于显示Android和html... 特征: 通过网络浏览器打开Android应用通过另一个应用程序打开Android应用程序申请者网页浏览器项目路径: app-call/web/ 发送带有查询参数的参数: href=...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    关键词:HTML5,检测与认证,Android,多窗口浏览器模式,跨域处理,页面自适应 Abstract At present business processes are old and explicit in industrial market of certification and detection filed, as ...

    jquerymobile开发android应用整套框架

    没分下载东西了,只好卖我的经典代码了,以下是我通过html5做的多个跨平台应用的demo框架:使用 phonegap 开发android应用框架结构 前台页面用jquery mobile开发,后台用axis2开发实现webservice,前后台用js发送...

    html 调 用 摄 像 头

    应该有很多人知道,我们的手机里面有个功能是“抓拍入侵者”,说白了就是在解锁应用时如果我们输错了密码手机就会调用这一功能实现自动拍照。 其实在手机上还有很多我们常用的软件都有类似于这样的功能,比如微信...

    疯狂Android讲义源码

     13.5.3 使用Android应用调用  Web Service 512  13.6 本章小结 524  第14章 管理Android手机桌面 525  14.1 管理手机桌面 526  14.1.1 删除桌面组件 526  14.1.2 添加桌面组件 526  14.2 改变手机壁纸 527 ...

    黑马程序员安卓Android52期培训课

    2015/1/23 星期五 Android应用开发-页面跳转和数据传递 2015/1/24 星期六 Android应用开发-广播和服务 2015/1/25 星期日 2015/1/26 星期一 Android应用开发-广播和服务 2015/1/27 星期二 Android应用开发-多媒体...

    从HTML5文件在Android上播放音频

    通过Apps Assets文件夹中HTML5页面了解如何在Android应用程序中播放音频。

    Richbat网络应用开发工具

    对于手机应用开发者,只要具备wifi上网的安卓手机,就可以建立自己的手机应用服务器。 服务器端的逻辑控制是用lua脚本编写,支持热更新。为客户端提供文件下载接口,轻松实现客户端版本更新下载。Richbat客户端插件...

    在Android应用中使用HTMLParser便捷的解析html内容

    一般的做法有三种:1.WebAPP:利用HTML5技术,例如JQuerymobile、DojoXmobile,在服务器端对网页进行移动优化。2.HybridAPP:利用HTML5技术,以及phonegap等框架生成APP,可以通过phonegap直接调用手机操作系统的API...

    Google Android SDK开发范例大全(第3版) 1/5

    2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签 3.2 更改手机窗口画面底色 3.3 更改TextView文字颜色 3.4 置换TextView...

    Google Android SDK开发范例大全(第3版) 4/5

    2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签 3.2 更改手机窗口画面底色 3.3 更改TextView文字颜色 3.4 置换TextView...

    《Android应用开发》个人总结报告.doc

    《Android应用开发》个人总结报告 刚开始接触Android感觉到它很有意思,在界面开发上和web也可以形成了相通的架构 ,更加方便,视觉上也是非常的酷,在前期我通过的大量的Android SDK开发范例大全中的例子以及...

    Google Android SDK开发范例大全(第3版) 3/5

    2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签 3.2 更改手机窗口画面底色 3.3 更改TextView文字颜色 3.4 置换TextView...

    Google Android SDK开发范例大全(第3版) 5/5

    2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签 3.2 更改手机窗口画面底色 3.3 更改TextView文字颜色 3.4 置换TextView...

Global site tag (gtag.js) - Google Analytics