java 暴漏 一个对象给 webview
2024-06-18 本文已影响0人
苍老师的眼泪
引入注释类,后面用来声明一些方法
import android.webkit.JavascriptInterface;
定义一个java对象,这个对象传递给webview, 就可以在网页里面调用该对象的方法了
public class WebAppInterface {
Context mContext;
WebAppInterface(Context context) {
mContext = context;
}
@JavascriptInterface // 必须要声明所有的方法
public void exit_app() {
finish();
}
}
webview需要实例化该对象,第二个参数是定义对象在webview里面的变量名
webView.addJavascriptInterface(new WebAppInterface(this), "my_android_object");
在webview里面使用该对象:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<button onclick="clicked()">test</button>
<script>
function clicked() {
if(typeof my_android_object !== "undefined" && my_android_object !== null) {
try {
my_android_object.exit_app();
} catch (e) {
alert(JSON.stringify(e))
}
} else {
alert("没找到定义的java对象");
}
}
</script>
</body>
</html>