# # 首先明确一点 Android 与web 页面也就是网页主要通过Android 的控件 webview 进行交互的
先说 Android 中调用 网页以及与网页交互的JS
加载网页直接用webview加载
代码如下:
wv.loadUrl("http://192.168.2.180:8080/javaweb/testh5.html");
public void clicktest(View view){
wv.loadUrl("javascript:callH5('Android OK !!!')");
}
//此处为Android 调用web 页面的JS逻辑
达成与网页的交互
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p id="result"></p>
<script type="text/javascript">
function test() {
console.log("click()1")
window.android.showToat("显示Toast");
console.log("click()2")
}
//定义本地方法 效果提供给Android端调用 被调用后将获得参数值
function callH5(data){
document.getElementById("result").innerHTML=data;
}
</script>
<button onclick="test()">调用Android 的原生方法</button>
</body>
</html>
主要是JS 调用Android 主要是Android 的webview提供一个JS 接口提供给web 页面JS 代码调用
wv.getSettings().setJavaScriptEnabled(true);
wv.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return true;
}
**
});
wv.setWebChromeClient(new WebChromeClient());
** *==//这句话是关键与JS中window.android一致==***
wv.addJavascriptInterface(new JSI(),"android");
private class JSI {
@JavascriptInterface
public void showToat(String s){
Toast.makeText(getApplication(),s,Toast.LENGTH_SHORT).show();
}
}
====