2016-11-23 408 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。 –