2012-06-02 55 views
2

許多Android開發人員實施自己的webview。 儘管在stackoverflow上討論了很多與此主題相關的問題,但這可能是導致此缺乏清晰度的原因。開發人員網站互相矛盾regulating webview-shouldOverrideUrlLoading

要在您的WebView中打開鏈接,android開發人員可以定義他們自己的webview。

其中一個開發者網站是否有錯誤?它有API差異嗎? shouldOverrideUrlLoading最乾淨和最好用的是什麼?

答案將有助於我們的團隊和許多其他開發人員使用android webviews.Thanks。

回答

3

如果您決定實施WebViewClient

webView.setWebViewClient(new WebViewClient() 
{ 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) 
    { 
    // My own condition to decide if I should skip URL loading 
    boolean avoidURLLoading = ... 

    if (avoidURLLoading) 
    { 
     // Ask the WebView to avoid loading the URL, 
     // I want to manage this case on my own. 
     return true; 
    } 
    else 
    { 
     // Let the WebView load the URL 
     return false; 
    } 
    }; 
}); 

如果不實現WebViewClient,每次你會問的WebViewloadUrl方法加載的URL,它會要求活動管理器找到合適的應用程序來加載URL(通常是安裝在設備中的網頁瀏覽器)。

shouldOverrideUrlLoadingWebViewClient默認實現

public boolean shouldOverrideUrlLoading(WebView view, String url) 
{ 
    return false; 
} 

所以,如果你只是寫這樣的事情

webView.setWebViewClient(new WebViewClient()); 

的網址將自己的WebView內加載而不是在外部網頁瀏覽器中。

你會在shouldOverrideUrlLoading當你要修改的URL,然後裝入新的與另一個loadUrl來電或當你只是想避免加載URL和處理以不同的方式請求通常返回true

在你的榜樣行爲

public boolean shouldOverrideUrlLoading(WebView view, String url) 
{ 
    view.loadUrl(url); 
    return true; 
} 

,因爲你告訴的WebView避免處理URL負載(return true)相當於

public boolean shouldOverrideUrlLoading(WebView view, String url) 
{ 
    return false; 
} 

,但你也再次請求view.loadUrl(url),所以實際上你最終會加載URL。

+0

道具安德烈。這個答案是完全正確的。 –

+0

非常感謝您的回答。這確實解釋了這個問題。大!! – Sascha

0

爲了打開在當前的WebView鏈接(而不是瀏覽器),你返回前人的精力假像這樣:

mWebView.setWebViewClient(new WebViewClient(){ 
     public boolean shouldOverrideUrlLoading(WebView view, String url){ 

      return false; 

     } 
    }); 
+0

謝謝,但在developer.android.com/resources/tutorials/views/...上還有一個自定義的WebViewClient,返回true,以便當前的WebView被加載而不是瀏覽器。應該使用'view.load'返回false或'return true'來打開當前WebView中的鏈接,目前還不清楚。 – Sascha

0

只要你實現setWebViewClient(..)我的答案和axample做一樣的東西。如果你另一方面不執行它,瀏覽器將會啓動。

相關問題