2016-11-23 405 views
1

该网页有一些弹出式广告是否有任何方法来防止加载弹出窗口加载主站点不出现有任何方式加载主页面弹出出口,我怎么能添加一个下载处理程序我的意思是网页流量应该支持下载的.torrent文件我如何阻止或避免在web视图中弹出?

public class MainActivity extends AppCompatActivity { 
    private WebView webView; 
    private ProgressBar progressBar; 
    private LinearLayout layoutProgress; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     webView = (WebView) findViewById(R.id.webView); 
     progressBar = (ProgressBar) findViewById(R.id.progressBar); 
     layoutProgress = (LinearLayout) findViewById(R.id.layoutProgress); 
     webView.setVisibility(View.GONE); 
     WebSettings settings = webView.getSettings(); 
     settings.setJavaScriptEnabled(true); 
     settings.setBuiltInZoomControls(true); 
     settings.setSupportZoom(true); 
     settings.setDisplayZoomControls(false); 
     webView.setWebViewClient(new WebViewClient() { 
      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       view.loadUrl(url); 
       return true; 
      } 

      @Override 
      public void onPageFinished(WebView view, String url) { 
       webView.setVisibility(View.VISIBLE); 
       layoutProgress.setVisibility(View.GONE); 
       progressBar.setIndeterminate(false); 
       super.onPageFinished(view, url); 

      } 
      public void but(View v){ 

      } 

      @Override 
      public void onPageStarted(WebView view, String url, Bitmap favicon) { 
       layoutProgress.setVisibility(View.VISIBLE); 
       progressBar.setIndeterminate(true); 
       super.onPageStarted(view, url, favicon); 
      } 
     }); 
     if(isOnline()) { 
      webView.loadUrl("http://testsite.com/"); 
     } else { 
      String summary = "<html><body><font color='red'>No Internet Connection</font></body></html>"; 
      webView.loadData(summary, "text/html", null); 
      toast("No Internet Connection."); 
     } 
    } 
    private void toast(String message) { 
     Toast.makeText(this, message, Toast.LENGTH_LONG).show(); 
    } 

    public void onBackPressed() { 
     if(webView.canGoBack()) { 
      webView.goBack(); 
     } else { 
      super.onBackPressed(); 
     } 
    } 

    private boolean isOnline() { 
     ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo netInfo = cm.getActiveNetworkInfo(); 
     return (netInfo != null && netInfo.isConnected()); 
    } 
    public void but(View v){ 

     webView.loadUrl("http://testsite.com/"); 
    } 
} 

回答

1

如果URL变化然后使用shouldOverrideUrlLoading与一些正则表达式

所以

List<String> validUrls = new LinkedList<>(); 
validUrls.add("https://www\\.google\\.com/*"); 
validUrls.add("https://www\\.facebook\\.com/*"); 


@Override public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    if (isValidUrl(url)) { 
     return false; 
    } 
    return true; 
} 

private boolean isValidUrl(String url) { 
    for (String validUrl : validUrls) { 
     Pattern pattern = Pattern.compile(validUrl, Pattern.MULTILINE); 
     Matcher matcher = pattern.matcher(url); 
     if (matcher.find()) { 
      return true; 
     } 
    } 
    return false; 
} 

将匹配对任何www.google.com或facebook.com网址

+0

让我工作吧 –

+0

它不工作尝试它它甚至不加载超链接尝试它与您自己的google.com代码,但它也加载youtube和facebook @Matthew采煤机 –

+0

真/假切换怎么样? –

0

您可以拦截从web视图打开的网址,我不知道这是否会与弹出的工作:

WebViewClient client= new WebViewClient(){ 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url){ 
      if (url.equals("popupURL"){ 
       return true; 
      } 
      return false; 
     } 
    } 

webView.setWebViewClient(client); 
+0

让我在这工作做的我需要给的完整网址? –

+0

它会随时更改 –

+0

您可以检查url是否包含特定模式。基本上有两种选择,查找弹出窗口的模式或查找您的torrent网址的模式。如果不想让浏览器打开url,则必须返回true,否则返回false。 –