首页 > 解决方案 > 检查 webview 的 shouldInterceptRequest 是否会被调用?

问题描述

我有一个 android 应用程序,我在其中使用 webview 加载一个调用 javascript 函数的 html 文件,如下所示:

爪哇:

 mWebView.getSettings().setJavaScriptEnabled(true);
 mWebView.loadUrl("file:///android_asset/dog.html");
 mWebView.setWebChromeClient(new WebChromeClient());
 mWebView.loadUrl("javascript:sayhello('how are you')");
 mWebView.setWebViewClient(getWebViewClient());

html:

    <head>
    <script type="text/javascript" src="somelibrary.js"></script>
    </head>
<body>
<script>
function sayhello(text){
somelibrary.somefunc(text);
}
</script>
</body>

现在在我的应用程序中,我正在拦截来自 js 库的请求,如下所示:

 private WebViewClient getWebViewClient() {
return new WebViewClient() {
            @Nullable
            @Override
            public WebResourceResponse shouldInterceptRequest(final WebView view, final String url) {}
}}

我需要的是,我想检查是否会调用 shouldInterceptRequest 方法,因为在我的某些请求中,它没有被触发。如果请求未被拦截,我想显示一些消息。有什么方法可以预先知道是否会触发 shouldInterceptRequest 方法?

标签: javascriptandroidwebview

解决方案


shouldInterceptRequest :该回调被各种 URL 方案调用(例如,http(s):、data:、file: 等),而不仅仅是那些通过网络发送请求的方案。这不适用于 javascript: URL、blob: URL 或通过 file:///android_asset/ 或 file:///android_res/ URL 访问的资产。

参考


推荐阅读