2016-08-04 47 views
0

我試着檢查頁面本身,而不是次要資源,加載時遇到問題,在我的WebView中重寫onReceivedError如何使用API​​ 23檢查頁面本身是否有加載錯誤?

myWebView.setWebViewClient(new WebViewClient() { 
    //... 

    @Override 
    public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { 

     //do something with error.getErrorCode() 

    } 

    //... 
}); 

然而,一旦頁面加載完成,即使頁面似乎已被正確裝入有時我得到的onReceivedError垃圾電話,從而無法確定網頁沒有實際加載(例如,緩存未命中的頁面本身)。

我該怎麼辦呢?

+0

我想我可能錯過了一些重複的帖子來解決這個問題。或者將此作爲一個單獨的問答沒有意義,我應該選擇一個更廣泛的問題(不完全是API 23)的現有問題來發布答案。或者僅僅是一個單獨的問答(儘管不能判斷這個問題,但不是這方面有經驗的開發人員)。請評論,然後我將刪除問答。我剛剛發現搜索沒有爲我提供解決方案,並試圖自己做(似乎我已經成功)。 – nicael

回答

0

從API 23開始,此方法已被修改,現在只要有任何事情,即使次要資源(即圖像/樣式表/腳本)加載出錯都調用此方法。

解決方法是檢查主URL是否等於請求的URL,然後才執行任何操作。

myWebView.setWebViewClient(new WebViewClient() { 
    //... 

    @Override 
    public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { 

     if(request.getUrl().toString().equals(myWebView.getUrl())){ 
      //that's the page that throws the error 
     } 

    } 

    //... 
}); 
相關問題