防止Webview加载某些URL

8
我创建了一个Android应用程序,可以托管网站,该网站会加载一些外部链接“URL”。
我需要阻止在/res/raw/文件中存储的某些URL在Webview中加载。
我尝试重写shouldInterceptRequest(WebView view,String url)方法,但我不知道如何使用它。
2个回答

17
你可以使用WebViewClientshouldOverrideUrlLoading方法。

在当前WebView即将加载一个新的URL时,让宿主应用有机会控制。如果提供了WebViewClient,则返回true表示宿主应用处理当前URL,而返回false则表示当前WebView处理该URL。

在代码中:
    public class MyWebViewClient extends WebViewClient {
    public boolean shouldOverrideUrlLoading (WebView view, String url) {
        if (Uri.parse(url).getHost().equals("http://Your_website_url")) {
             // This is my web site, so do not override; let my WebView load the page
             return false;
        }

        // reject anything other
        return true;
    }
}


mWebview.setWebViewClient(new MyWebViewClient());  //set the webviewClient

2
您需要重写方法 shouldOverrideUrlLoading (请查看此处),该方法属于您的WebViewClient。如果您希望加载页面,请返回false;如果您想阻止加载,请返回true。请注意,必须覆盖shouldOverrideUrlLoading 方法,而不是其他方法。保留HTML标签,让内容更加易懂。

在这种情况下,如何在文件中阻止站点列表? - Mike jess
你需要实现这个逻辑。将列表加载到List中,然后在shouldOverrideUrlLoading中检查该列表。 - Massimo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接