android 判断webview加载成功,Android:如何检查使用webview.loadUrl时url的成功加载
不幸的是,目前在WebView中沒有簡單的方法來確保頁面上的所有內容都已成功加載。我們希望在未來的版本中提供更好的API。讓我解釋一下你現在可以做什么。
首先,為了檢測阻止WebView連接服務器加載主頁面的任何問題(例如,域名錯誤,I/O錯誤等),您應該使用WebViewClient.onReceivedError回調函數作為其他人的正確建議:
public class MyWebViewClient extends WebViewClient {
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
// Make a note about the failed load.
}
}
myWebView.setWebViewClient(new MyWebViewClient());
如果服務器連接成功,主要頁面被檢索和分析,您將收到WebView.onPageFinished回調,所以你也需要有這樣在你WebViewClient子類:
public class MyWebViewClient extends WebViewClient {
...
@Override
public void onPageFinished(WebView view, String url) {
// Make a note that the page has finished loading.
}
...
}
這里需要注意的是,如果您從服務器收到HTTP錯誤(例如,一個404或500錯誤),這個回調將被調用,這只是你在WebView中獲得的內容將是一個服務器錯誤頁面。人們提出了不同的處理方法,請參閱這里的答案:How can I check from Android WebView if a page is a "404 page not found"?基本上,這取決于你期望成為一個“好”頁面和一個“錯誤”頁面。不幸的是,應用程序目前無法從WebView獲取HTTP響應代碼。
回調WebViewClient.onPageStarted和WebViewClient.onProgressChanged僅在您要加載頁面時繪制進度條時才有用。
還要注意的是壓倒一切WebViewClient.shouldOverrideUrlLoading,人們通常建議的方式是不正確的:
public class MyWebViewClient extends WebViewClient {
...
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// !!! DO NOT DO THIS UNCONDITIONALLY !!!
view.loadUrl(url);
return true;
}
...
}
少數開發商體會到什么是回調也呼吁與非HTTPS模式的子幀。如果您遇到像這樣的內容,您將最終執行view.loadUrl('tel:1234'),并且您的應用將顯示錯誤頁面,因為WebView不知道如何加載tel: URL。 建議簡單地從方法返回false,如果你想要的WebView做負載:
public class MyWebViewClient extends WebViewClient {
...
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// Returning 'false' unconditionally is fine.
return false;
}
...
}
這并不意味著你不應該從shouldOverrideUrlLoading調用WebView.loadUrl可言。要避免的具體模式是無條件地為所有URL執行此操作。
總結
以上是生活随笔為你收集整理的android 判断webview加载成功,Android:如何检查使用webview.loadUrl时url的成功加载的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 必须声明标量变量_Excel VBA解读
- 下一篇: linux操作系统桌面应用与管理第2版,