2012-12-07 30 views
9

Tôi có một WebView trong đó tôi tải một trang với một liên kết tùy chỉnh (như app: // action). Tôi đã đăng ký các lược đồ url trong tệp kê khai và khi tôi nhấp vào liên kết, phương thức onResume() của Hoạt động của tôi được gọi với dữ liệu chính xác và nó hoạt động OK.Làm cách nào để chặn tải url trong WebView (android)?

Vấn đề của tôi là WebView vẫn cố tải liên kết và WebView của tôi kết thúc để hiển thị thông báo "Trang web không khả dụng". Tôi không muốn điều đó.

Làm cách nào để ngăn WebView tải url?

Dưới đây là mã của tôi:

WebView banner = ... 
banner.setWebViewClient(new WebViewClient() { 

    @Override 
    public void onLoadResource(WebView view, String url) { 

     if (url.startsWith("app://")) { 

      Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url), getContext(), Main.class); 
      //startActivity(i); 
     } 
    } 
} 

banner.loadUrl("url_to_the_banner"); 

Trả lời

22

Sử dụng WebViewClient.shouldOverrideUrlLoading để thay thế.

public boolean shouldOverrideUrlLoading(WebView view, String url){ 
    // handle by yourself 
    return true; 
} 

WebViewClient Reference

Cập nhật: Phương pháp shouldOverrideUrlLoading(WebView, String) bị phản đối ở mức API 24. Sử dụng shouldOverrideUrlLoading(WebView, WebResourceRequest) để thay thế.

+0

chết tiệt! Tôi chỉ bỏ lỡ nó trong ref! Cảm ơn người đàn ông! – Alexis

6

Nhưng nó phải trả về false nếu không như vậy:

@Override 
public boolean shouldOverrideUrlLoading(WebView view, String url){ 
    if(url.startsWith(myString){ 
     // handle by yourself 
     return true; 
    } 
    // ... 
    return false; 
} 
Các vấn đề liên quan