Android与js互调

1,457 阅读1分钟

一、Javascript调用Android代码

WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
webView.addJavascriptInterface(new JavaScriptInterface(), "App");

新建JavaScriptInterface类,将js要调用的方法全部写在这里,方法记得加@JavascriptInterface注解

public class JavaScriptInterface {

    @JavascriptInterface
    public void jsCallNative() {
        Log.d("TAG", "js call native method!");
    }
}
//js中调用
function jsCallNative() { 
    javascript:App.jsCallNative();
}

二、Android调用Javascript代码

//调用无参方法
webview.loadUrl("javascript:JSMethod()"); //无法获取到返回值

//调用有参方法
mWebView.loadUrl("javascript:JSMethod('参数')");

如果你项目的minSdkVersion 为4.4 以上,可以通过这个方法获取到返回值。 如果需要适配4.4以下,可参考这篇文章[Android]WebView 调用JS方法获取返回值 不过现在4.4以下的手机很少见了。

webview.evaluateJavascript("javascript:JSMethod()", new ValueCallback<String>() {
            @Override
            public void onReceiveValue(String value) {
                //value -> js方法的返回值
            }
        });