Я собираюсь запустить WebView AdBlocking в моем приложении для Android. Я хочу знать, будет ли это эффективно блокировать рекламу или если еще что-то сделать, скажем в самом веб-обозревателе, которое я не изменил. В основном у меня есть файл хоста, хранящийся в активах Android, в котором перечислены сотни сайтов рекламного сервера. Я прочитал этот файл в моей AdBlocker, а затем применить его внутрь WebViewClient следующим образом:Завершить AdBlock внутри WebView
// AdBlocker.isAdURL(String url)
public Boolean isAdURL(String url){
Boolean retValue = false;
if ((url == null) || (url.isEmpty()))
return false;
if ((adServers == null)|| (adServers.size() <1))
return false;
try{
String domainName = getUrlsDomain(url);
if (adServers.contains(domainName)) {
retValue = true;
}
} catch(URISyntaxException e){
}
return retValue;
}
И я использую это только в WebViewClient следующим образом:
@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);
}
И точно так же:
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
if (Build.VERSION.SDK_INT >= 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);
}
Что-нибудь еще нужно сделать? Или это так? Любая потребность сохранить белый список или будет ли это вообще работать, если мой список рекламных серверов будет текущим?
_could вы можете разместить свою функцию getUrlsDomain (url)? _ -> неважно, нашел ответ здесь: [link] (http://stackoverflow.com/questions/9607903/get-domain-name-from-given- url # 9608008) – xtools