100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > android 判断webview加载成功 Android:如何检查使用webview.loadUrl时url的成功加载

android 判断webview加载成功 Android:如何检查使用webview.loadUrl时url的成功加载

时间:2021-11-12 13:02:07

相关推荐

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执行此操作。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。