Android与H5交互

随着混合应用开发越来越多,需求场景的不断变化,碰到一个问题,最底层H5页面点击图片预览,是直接DIV图层的显示,而不是页面的跳转,所以点击返回按钮的时候,不能直接返回,要先调用js关掉图层,所以需要交给js进行处理。

Android与H5交互_第1张图片

常用的Java调用js,直接用loadUrl,但是没有返回值,不能进行回调,sdk19以上采用evaluateJavascript方法,在回调方法里又返回值,效率优于loadUrl,所以最后采用evaluateJavascript方法进行处理。

Android与H5交互_第2张图片补充:转自:https://blog.csdn.net/bin622/article/details/71171256

1、webview的配置

webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new JSBridge(this, webView), "JSBridge");

2、类JSBridge示例

class JSBridge{
    private Context mContext;
    private WebView mWebView;


JSBridge(Context context, WebView webView) {
        mContext = context;
        mWebView = webView;

    }

     /**
     * 从app获取数据
     * @param dataType 获取的数据类型
     * @param extra    传给app的额外数据
     * @return
     */
    @JavascriptInterface
    public String getData(String dataType, String extra)   {

    }
}

 

3、js调用java的代码(只能调用那些被@JavascriptInterface注解的方法)

window.jsInterfaceName.methodName(parameterValues)此例中我们使用的是JSBridge作为注入接口名称。
例如:window.JSBridge.getData()

4、java调用js的方法:(更多调用方法参考http://www.imooc.com/article/1475)

String callbackUrl = "javascript:" + functionName + "()";
mWebView.post(new Runnable() {
       @Override
       public void run() {
       mWebView.loadUrl(callbackUrl);
                    }
           });

你可能感兴趣的:(android,h5,交互)