Android WebView与JS交互及消息处理

来源:互联网 发布:java 返回数组给前台 编辑:程序博客网 时间:2024/05/29 12:54

一、WebView与JS交互

1.JS调用本地方法

这个功能的实现还是比较容易的。直接调用WebView的该方法就可以添加接口了,不过先要启动交互

?
1
2
3
4
// 启用javascript 
mWebView.getSettings().setJavaScriptEnabled(true);
// 添加接口
publicvoid addJavascriptInterface (Object object, String name)


Object是JS调用本地的类的对象,name是对象的别名,在JS可以用这个别名+点语法+方法名就可以调用本地的方法。例如:

?
1
2
3
4
5
WebView mWebView;
         
// ...
         
mWebview.addJavascriptInterface(this,"myjs");

再定义一个JS可以调用的方法:

?
1
2
3
publicvoid jsFunction(String string) {
        System.out.println("js调用了这个方法:"+ string);
}
这样在JS就可以调用这个方法

注意:该方法不可以定义成私有的,不然JS就不能调用


2.本地调用JS方法

这个就更容易了- -,直接用以下方法就行了,假设JS上有一个方法叫androidFunction()

?
1
mWebview.loadUrl("javascript:androidFunction()");


二、消息处理

1、遇到Uncaught ReferenceError:...错误

出现该错误不会崩溃,它的意思是本地方法调用JS时没有找到调用的方法。万一我们调用的方法不存在,需要做相应的处理怎么办?Shamoo尝试try ... catch ...抓取一下异常,发现什么都没有抓到...后来仔细看了一下错误Log的TAG,是Web Console。Shamoo想肯定有办法抓取这个异常的,于是看了一下官方文档,终于发现了这么一个方法:

?
1
2
3
4
5
6
7
8
9
10
mWebview.setWebChromeClient(newWebChromeClient() {
    @Override
    publicboolean onConsoleMessage(ConsoleMessage consoleMessage) {
        // TODO Auto-generated method stub
    if(consoleMessage.message().contains("Uncaught ReferenceError")) {
            // do something...
    }
    returnsuper.onConsoleMessage(consoleMessage);
    }
});
这个方法可以监听WebView的控制台消息,然后判断一下消息是否包含“Uncaught ReferenceError”就可以捕获该消息了

2.获取JS方法的返回值

仔细观察会发现WebView的loadUrl方法是没有返回值的,那要是想要获取JS方法的返回值就该怎么做呢?Shamoo查了一些资料,发现网上也没有很好的解决办法,后来只能通过回调的方法来实现返回,虽然很不灵活,不过也没有办法...

在loadUrl调用JS的一个方法,然后JS执行方法的时候,再调用Android本地的一个方法,并把返回值作为参数传递下来。

0 1
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 如果遇到半夜坏人敲门怎么办 小孩晚上不进房间睡觉怎么办 房子照不到阳光潮湿怎么办 4个月婴儿不拉屎怎么办 小孩六个月奶不够吃怎么办 到晚上就没奶水怎么办 20多天奶水不够怎么办 四个月奶不够吃怎么办 7个月宝宝不肯吃东西怎么办 6个月宝宝不肯吃东西怎么办 十一个月宝宝不肯吃东西怎么办 九个月宝宝不肯吃辅食怎么办 八个月宝宝不肯吃辅食怎么办 七个月宝宝不肯吃辅食怎么办 7个月宝不吃辅食怎么办 在月子里奶不够怎么办 8月宝宝不吃辅食怎么办 8个月不吃辅食怎么办 宝宝不吃药怎么办一岁 奶水不足宝宝又不吃奶粉怎么办 一岁婴儿突然不吃饭怎么办 一岁宝宝突然不吃饭怎么办 一岁半宝宝突然不爱吃饭怎么办 1岁宝宝突然不爱吃饭怎么办 一岁多宝宝突然不爱吃饭怎么办 一岁半宝宝突然不吃饭怎么办 八个月宝宝不吃奶粉怎么办 小孩铅超标怎么办如何排铅 宝宝突然不吃辅食怎么办 6个月宝宝不喝奶怎么办 宝宝4月不吃母乳怎么办 不吃母乳怎么办 8个月 宝宝不吃奶粉母乳又不够怎么办 宝宝只吃母乳不吃奶粉怎么办 十个月宝宝不爱吃辅食怎么办 奶水不足宝宝不吃奶粉怎么办 两个月宝宝不吃奶瓶怎么办 宝宝拉的有鼻涕怎么办 七个月宝宝拉肚子拉水怎么办 十个月宝宝拉肚子拉水怎么办 一个月宝宝拉肚子拉水怎么办