项目开发中WebView用的很多。但是,有时候不仅仅是展示。还需要交互。比如点击WebView中的按钮,关闭当前activity等等。
正常WebView加载不在多说。分别说一下,前后端处理方式:
1.服务端:
在html网页编写的时候。点击按钮添加点击事件:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>关闭当前页面</title>
<script>
function callAndroid(){
// 由于对象映射,所以调用question对象等于调用Android映射的对象
//question : 约定好的一个name(只要一致即ok)
//over : 约定好的方法名(只要一致即ok)
question.over();
}
</script>
</head>
<body>
//点击按钮则调用callAndroid函数
<button type="button" id="button1" onclick="callAndroid()"></button>
</body>
</html>
2. Android 端:
首先定义一个类:
public class JavascriptCloseInterface {
/**
* 注意: 在Android4.2极其以上系统需要给提供js调用的方法前加入一个注视:@JavaScriptInterface;
* 在虚拟机当中 Javascript调用Java方法会检测这个anotation,
* 如果方法被标识@JavaScriptInterface则Javascript可以成功调用这个Java方法,否则调用不成功。
* 注意方法名要同后台约定的相同
*/
@JavascriptInterface
public void over() {
finish();
}
}
然后webview调用
//添加与js的交互接口,起的名称与js代码中的接口名称要一致
webView.addJavascriptInterface(new JavascriptCloseInterface(), "question");
大功告成。。