在 Android 的 WebView 中,“监听”通常指以下几类场景。我按常见需求给你系统讲一下:
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// 页面开始加载
}
@Override
public void onPageFinished(WebView view, String url) {
// 页面加载完成
}
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
// 加载失败
}
});
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("myapp://")) {
// 自定义协议监听
return true;
}
return false;
}
});
webView.addJavascriptInterface(new Object() {
@JavascriptInterface
public void onEvent(String data) {
// JS 调用:window.android.onEvent("xxx")
}
}, "android");
JS 端:
window.android.onEvent("hello");
webView.evaluateJavascript("jsFunction()", value -> {
// 监听 JS 返回值
});
@Override
public void onBackPressed() {
if (webView.canGoBack()) {
webView.goBack();
} else {
super.onBackPressed();
}
}
webView.setOnTouchListener((v, event) -> {
// 监听触摸
return false;
});
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
// 进度 0~100
}
});
| 监听类型 | 使用方式 |
|---|---|
| 页面加载 | WebViewClient |
| URL 拦截 | shouldOverrideUrlLoading |
| JS → Native | addJavascriptInterface |
| Native → JS | evaluateJavascript |
| 进度 | WebChromeClient |
| 返回键 | onBackPressed |
如果你指的是 “某个具体监听”(比如监听某个按钮点击、监听网络、监听 H5 事件),可以直接告诉我场景,我给你写完整示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。