前一段时间做公司的项目,涉及到WebView与JS之间的通信,于是在网上查了点资料研究了一下下。
一、WebView与JS交互
1.JS调用本地方法
这个功能的实现还是比较容易的。直接调用WebView的该方法就可以添加接口了,不过先要启动交互
// 启用javascript mWebView.getSettings().setJavaScriptEnabled(true);// 添加接口public void addJavascriptInterface (Object object, String name)
Object是JS调用本地的类的对象,name是对象的别名,在JS可以用这个别名+点语法+方法名就可以调用本地的方法。例如:
WebView mWebView; // ... mWebview.addJavascriptInterface(this, "myjs");
再定义一个JS可以调用的方法:
public void jsFunction(String string) { System.out.println("js调用了这个方法:" + string);}
这样在JS就可以调用这个方法
注意:该方法不可以定义成私有的,不然JS就不能调用
2.本地调用JS方法
这个就更容易了- -,直接用以下方法就行了,假设JS上有一个方法叫androidFunctio()
mWebview.loadUrl("javascript:androidFunction()");
二、消息处理
1、遇到Uncaught ReferenceError:...错误
出现该错误不会崩溃,它的意思是本地方法调用JS时没有找到调用的方法。万一我们调用的方法不存在,需要做相应的处理怎么办?Shamoo尝试try ... catch ...抓取一下异常,发现什么都没有抓到...后来仔细看了一下错误Log的TAG,是Web Console。Shamoo想肯定有办法抓取这个异常的,于是看了一下官方文档,终于发现了这么一个方法:
mWebview.setWebChromeClient(new WebChromeClient()
{
@Override
public boolean onConsoleMessage(ConsoleMessage consoleMessage) { // TODO Auto-generated method stub
if (consoleMessage.message().contains("Uncaught ReferenceError")) {
// do something...
}
return super.onConsoleMessage(consoleMessage);
}});
这个方法可以监听WebView的控制台消息,然后判断一下消息是否包含“Uncaught ReferenceError”就可以捕获该消息了
2.获取JS方法的返回值
仔细观察会发现WebView的loadUrl方法是没有返回值的,那要是想要获取JS方法的返回值就该怎么做呢?Shamoo查了一些资料,发现网上也没有很好的解决办法,后来只能通过回调的方法来实现返回,虽然很不灵活,不过也没有办法...
在loadUrl调用JS的一个方法,然后JS执行方法的时候,再调用Android本地的一个方法,并把返回值作为参数传递下来。
分享到:
相关推荐
android webview与js交互简单demo
Android webview与js交互
Android 与Js交互的简单实现Demo 你们可以看看,必有收获
一个简单的android中webview与js交互的例子
android不使用webview与js交互
Android加载assets里的html并实现WebView与JavaScript的交互
Android笔记webview与js交互实例,详细介绍使用loadUrl(),evaluateJavascript(),addJavascriptInterface(),等方式实现交互。
因为开发中经常用到android和WebView混合交互开发来降低开发时间。 所以加了一点类java反射机制工具小框架来方便交互 反射这个类lxz.utils.android.webview.plugins.ToastScript 地址:...
Android WebView与JavaScript交互的相关内容,作为自己的一个备忘,也希望 可以对其他人有点提示作用
源码参考,欢迎下载
Android app 与网页交互 WebView 与JS交互 demo把人脸检测中人眼坐标传递到网页上显示出来,第一个想到的事webview, 但书上支持说用GET POST,并不能实现这种效果,请教罗享同志后百度webview与JS交互就有了.
Android高级应用源码-Android webView和js交互的Demo.zip
android webview js交互, 响应webview中的图片点击事件 ,点击(双击)使图片变大,单击退出
Android 通过 WebView 与 js 交互实现图文混排, 解决图片适配屏幕问题与查看大图功能
A simpler, extendable bidirectional communication Frame between Android WebView and Javascript Features supports parsing and callback for JS primitive types Modular management support System WebView ...
Android 和 javascript 交互 Android混合开发之WebView与Javascript交互
为了使Android移动项目能够在较短的时间内完成开发,同时降低技术人员开发的成本投入,往往会采用Hybrid APP的开发模式。...势必需要了解与掌握Android[java]与JavaScript之间的交互、相互调用操作的方法与技术。
x5webview和js交互的三方库
在js中调用android代码,实现在android中点击webview上的按钮,屏幕打印Toast。
android中Webview与javascript的交互(互相调用)android中Webview与javascript的交互(互相调用)