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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值