主要是采用 JavascriptInterface
先上一段JS代码
<html lang="zh-CN">
<script>
function AndroidCallJs(){
document.getElementById("Message").innerHTML = "JAVA调用了JS的无参方法";
}
function AndroidCallJsValue(arg){
document.getElementById("Message").innerHTML = (arg);
}
</script>
<button id="Message">调用js的值</button>
<br/>
<button type="button" onclick="window.android.jsCallAndroid()">Js调用Java代码无参数</button>
<br/>
<button type="button" onclick="window.android.jsCallAndroidValue('Js传过来的参数')">Js调用Java代码有参数</button>
</html>
然后设置一些webview的基础设置 让webview支持 JavascriptInterface
WebSettings webSettings = mViewView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
webSettings.setAllowFileAccess(true);
webSettings.setAllowFileAccessFromFileURLs(true);
webSettings.setAllowUniversalAccessFromFileURLs(true);
webSettings.setAppCacheEnabled(true);
webSettings.setAllowContentAccess(true);
mViewView.addJavascriptInterface(WebViewActivity.this, "android");
首先是android 调用 js 有参 和无参
//无参数调用
web_showAndroidCallJS.setOnClickListener(new View.OnClickListener() {//android 调用js'
@Override
public void onClick(View v) {
mViewView.loadUrl("javascript:AndroidCallJs()");
}
});
//传参调用
web_showMessageCallJSValue.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mViewView.loadUrl("javascript:AndroidCallJsValue(" +"\'"+ s +"\'"+ ")");
}
});
然后是js 调用android 方法 也是分为有参和无参 具体参考就js代码
/**
* js调用android 无参数
*/
@JavascriptInterface
public void jsCallAndroid(){
web_showMessage.setText("Js调用Android方法");
}
/**
* ja调android 有参数
* @param value 为js传过来的参数
*/
@JavascriptInterface
public void jsCallAndroidValue(String value){
web_showMessage.setText(value);
}
到这里交互就结束了 此文章只涉及交互