Complete AdBlock inside WebView
<p>I am about to roll out WebView AdBlocking in my android app. I want to know if this will effectively block ads or if there is more to be done say within the Webview itself which I have not modified. Basically I have a host file of stored in Android assets which lists hundred of ad server sites.  I read this file in to my AdBlocker and then apply it inside the WebViewClient as follows:</p>

<pre><code>// AdBlocker.isAdURL(String url)

 public Boolean isAdURL(String url){
      Boolean retValue = false;
      if ((url == null) || (url.isEmpty()))
        return false;
      if ((adServers == null)|| (adServers.size() &lt;1))
        return false;
      try{
        String domainName = getUrlsDomain(url);
        if (adServers.contains(domainName)) {
            retValue = true;
        }
    } catch(URISyntaxException e){

    }

    return retValue;
}
</code></pre>

<p>And I only use this in WebViewClient as follows:</p>

<pre><code>@Deprecated
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {

      if (adBlocker.isAdURL(url)) {
         ByteArrayInputStream nada = new ByteArrayInputStream("".getBytes());
        return new WebResourceResponse("text/plain", "utf-8", nada);
     }
    return super.shouldInterceptRequest(view, url);
}
</code></pre>

<p>And similarly:</p>

<pre><code> @Override
 public WebResourceResponse shouldInterceptRequest(WebView view,  WebResourceRequest request) {
      if (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.LOLLIPOP) {
        if (adBlocker.isAdURL(request.getUrl().toString())) {
            ByteArrayInputStream nada = new    ByteArrayInputStream("".getBytes());
            return new WebResourceResponse("text/plain", "utf-8", nada);
        }

    }

    return super.shouldInterceptRequest(view, request);
}
</code></pre>

<p>Anything more need to be done? Or is that it? Any need to keep a whitelist or will this generally work assuming my list of adservers is current?</p>