8

I create a android app that host website, the website loads some external links "URL".

I need to block some URLs that store in file on /res/raw/ from loading in webview.

I try override shouldInterceptRequest(WebView view, String url), but I don't know how use it.

Mark Rotteveel
  • 100,966
  • 191
  • 140
  • 197
Mike jess
  • 151
  • 1
  • 10

2 Answers2

17

You can use shouldOverrideUrlLoading

method of the WebViewClient

Give the host application a chance to take over the control when a new url is about to be loaded in the current WebView.If WebViewClient is provided, return true means the host application handles the url, while return false means the current WebView handles the url.

in code:

    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
rafsanahmad007
  • 23,683
  • 6
  • 47
  • 62
2

You have to override the method shouldOverrideUrlLoading (see here) of your WebViewClient, rather than the one you are overriding. Just return false if you want to load the page; true if you want to block loading.

Massimo
  • 3,436
  • 4
  • 40
  • 68