Android调用js代码
1.通过webView的loadUrl()方法调用
mWebView.loadUrl("javascript:callJsFromAndroid()");//调用空参的方法
mWebView.loadUrl("javascript:callJsFromAndroid(\"是谁在敲打我窗\")");//调用有参的方法
传String的时候要加转义字符
2.通过webView的evaluateJavascript()方法
mWebView.evaluateJavascript("javascript:callJsFromAndroid(\"是你的就是你的\")", new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
//这里value即是js的返回值
//如果value为null,那么检查js代码中该方法是否有返回值
}
});
注意,不管采用哪种方法调用js代码,下面三点必须符合
1.javascript是固定的,写死即可。这里是为了告诉webview我要调用javascript中的方法
2.callJsFromAndroid()这个方法是html中定义好的方法,我们调用的时候名称一定要匹配上。通过这两步完成了一个信息的传递:告诉webView我要调用javascript中的callJsFromAndroid()方法
3.js代码调用一定要在onPageFinished() 方法之后调用,否则不生效
3.两种方法比较
loadUrl()
获取js的返回值比较难。
网络盛传该方法会引起页面的重新加载,但我实验了一下,并没有发现该现象。不知道是哪里出了错。
我是在模拟器上,加载的assets中的html。
希望有大神可以指正
evaluateJavascript()
:Android 4.4以上才可以用,但不会引起页面的刷新