Android WebView和JS交互

web.gif

WebView的常规配置就不多说了,这里只说一下WebView和 JS的交互问题,通过 WebView的addJavascriptInterface()进行对象映射的方式进行交互。

步骤

首先要让WebView能够执行javaScript

webSettings.setJavaScriptEnabled(true);

然后定义一个和js交互的类

public class JS2AndroidUtil {

    private Activity mActivity;

    public JS2AndroidUtil(Activity activity) {
        this.mActivity = activity;
    }

    // 定义JS需要调用的方法
    // 被JS调用的方法必须加入@JavascriptInterface注解
    @JavascriptInterface
    public void clickAction(String msg) {
        if (mActivity instanceof WebViewActivity){
            ((WebViewActivity) mActivity).show(msg);
        }
    }

}

然后映射到JS中

// 通过addJavascriptInterface()将Java对象映射到JS对象
        // 参数1:JS调用android中方法对象
        // 参数2:映射到js中的test对象
        webView.addJavascriptInterface(new JS2AndroidUtil(this) , "test");
        webView.loadUrl("file:////android_asset/index.html");

下面看一下H5中的处理:




    
    Carson
    


    
    



这里面有两个地方需要对应, 第一个是addJavascriptInterface的时候,定义的test对象,是和JS中对应的,第二个是JS2AndroidUtil 中的clickAction方法也要和JS中对应,这样就能实现Android和JS的交互了。当然,在JS2AndroidUtil 也可以定义一个接口回调到Activity中处理,我这里只是简单处理了一下。

你可能感兴趣的:(Android WebView和JS交互)