码迷,mamicode.com
首页 > Web开发 > 详细

webview与壳交互的几种方式

时间:2014-09-04 00:07:27      阅读:306      评论:0      收藏:0      [点我收藏+]

标签:android   style   blog   color   os   io   java   div   cti   

1.js调用android中的方法

(1)通过addJavascriptInterface通信

android中webview增加addJavascriptInterface的方法,

webView.addJavascriptInterface(new JavaScriptInterface(),"Demo");

对JavaScriptInterface实现构造函数,增加方法,js可以直接采用命名空间的方式,调用定义的方法。

final class JavaScriptInterface{
        JavaScriptInterface(){
        }
        //注意:17+版本,必须申明注解
        @JavascriptInterface
        public void clickOnAndroid() {
            mHandler.post(new Runnable() {
                public void run() {
                    webView.loadUrl("javascript:wave()");
                }
            });
        }
    }

html中可以直接通过window.Demo.clickOnAndroid调用android中的方法。

(2)通过window.location(url)

url可以做一个接口定义,比如url=open?title=1&name=2&callback

定义一个方法,加参数,回调函数。

android在MyWebViewClient中的shouldOverrideUrlLoading方法会进行拦截。

在此方法中可以对url进行解析,触发相应的接口方法,达到了js调用android方法,对壳做一些交互处理。

=====

分析:

js调用android或者ios中的方法,建议采用window.location的方式,统一定义一套接口,采用相同的url进行解析。这样,在前端js处理时就无需为android、ios各自做判断,定义不同的调用机制,通用性也比较强。

2.android中调用js的方法

webView.loadUrl("javascript:wave()");

html中有个function wave(){}方法,通过该方式可以直接调用wave()。

通过这种模式,js中的方法都是暴露在window最顶级的对象上的。

 

webview与壳交互的几种方式

标签:android   style   blog   color   os   io   java   div   cti   

原文地址:http://www.cnblogs.com/shiqudou/p/3955029.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!