热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android利用JSBridge与HTML5的交互使用

转载请注明出处:http:blog.csdn.netjarchie520articledetails53955934最近在做一个论坛项目,项目当中涉及了AndroidNativ

转载请注明出处:http://blog.csdn.net/jarchie520/article/details/53955934

最近在做一个论坛项目,项目当中涉及了Android Native与Html5之间的交互操作,其实主要也就是Java端与Javascript端的交互工作,由于本人新手一枚,此前并无此方面的经验,所以就在网上找了一些相关的资料,得知在Android4.0之前,我们只需要在代码中做如下操作即可:

webView.addJavascriptInterface(new JavascriptInterface(), "BBSMutual");
但是到了Android4.4以后,需要在调用方法的时候加上@JavascriptInterface 注解才行,否则JS代码则不生效。针对以上种种,为了能够更好的开发交互,有大神封装了一套JavascriptBridge框架,省去了我们很多的工作,我们在使用的时候,只需要在项目里面依赖上这个框架,然后使用项目中自定义的Webview控件即可,开源框架可以到全球最大的同性交友网站github上面去下载。偷笑

下面来看一下交互的具体实现方法:

首先在JS端和Android端必须约定好相同的方法名称,这就类似于咱们平日里的消息通信时的一种暗号机制,

我在这里给出我写的Demo里面的一段代码介绍,我们先来看看JS端的代码,如果我们不需要传递任何参数,只是简单的调用Android中的某项操作,我们可以直接这样写:

//call native method
window.WebViewJavascriptBridge.callHandler('anqiTest');
这里的"anqiTest"就是我们约定的方法名,在Android中也会create this method,方法的内部会写一些具体的操作;如果我们需要从JS端传递一些数据或者说Android端也要为某项操作给JS端回传一些响应数据时,可以这样写:

//call native method
window.WebViewJavascriptBridge.callHandler(
'anqiTest', {'param': data }
, function(responseData) {

}
);
这里的data就是我们要给Android传递的数据,然后responseData就是从Android端回传的数据。

紧接着来看一下Android端的代码:

mWebView.registerHandler("anqiTest", new BridgeHandler() {
@Override
public void handler(String data, CallBackFunction function) {
if (data != null){
String str = data.substring(0,data.length()-1);
Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();
//回调给JS
function.onCallBack(str);
}else {
popChatfaceView();
}
}
});
同样的,这个"anqiTest"就是约定的那个方法,在这个handler的内部携带了两个参数,第一个参数data就是JS端给Native端传递过来的参数,我们在方法内部进行接收然后去执行其它的操作,第二回调就是我们需要在Native执行完了之后将一些响应数据发送给JS端,供JS去接收。在我的Demo里如果JS没有传递任何数据,将会执行其它的操作。

我在上面很详细的讲解了在Android端和在JS端是如何去收发数据的,因为我也是刚刚接触这些知识,所以今天就简单的说到这里,只能满足一个基本的使用。

在这里推荐一篇我参考的博文给大家:http://www.bkjia.com/Androidjc/1042382.html


推荐阅读
  • 本文总结了Java中日期格式化的常用方法,并给出了示例代码。通过使用SimpleDateFormat类和jstl fmt标签库,可以实现日期的格式化和显示。在页面中添加相应的标签库引用后,可以使用不同的日期格式化样式来显示当前年份和月份。该文提供了详细的代码示例和说明。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文讨论了在shiro java配置中加入Shiro listener后启动失败的问题。作者引入了一系列jar包,并在web.xml中配置了相关内容,但启动后却无法正常运行。文章提供了具体引入的jar包和web.xml的配置内容,并指出可能的错误原因。该问题可能与jar包版本不兼容、web.xml配置错误等有关。 ... [详细]
  • HowcanIaligntwoinline-blockssothatoneisleftandtheotherisrightonthesameline?Whyi ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 活动主题:五一巨献,问答有礼,105QB送给IT互联网界的劳动人民活动时间:4月30日晚上10点~5月2日晚上10点网址:http:ask.jiutianniao.com ... [详细]
  • javascript – 关于微信浏览器的疑问
    后端开发|php教程php,javascript,html5后端开发-php教程现在正在开发移动端webapp,遇到了比较麻烦的问题:用户输入帐号密码登陆后,自动跳转到首页,,QQ ... [详细]
  • 前端监控数据网络(要求阻拦)
    所谓web,纵然你我素未谋面,便知志趣相投;深居简出,亦知天下之大。01—为何阻拦要求如今的web运用,大都是经由过程要求(http)去猎取资本,拿到资本后再显现给用户,一个页面中 ... [详细]
  • Well,Ivebeensearchingfewdaysalready,howtodisplayHTML5videoinfull-screenmodeonandroi ... [详细]
author-avatar
dbvg2q
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有