Android WebView如何判定网页加载的错误

时间:2021-05-21

一 前言

在WebView加载网页的过程中,有时会页面加载不出来的情况,如下:

那么如何知道网页加载错误了呢?

二 解决方法

webview.webViewClient = object : WebViewClient() { override fun onPageFinished(view: WebView?, url: String?) { super.onPageFinished(view, url) Log.d(TAG, "onPageFinished: ") } override fun onReceivedError( view: WebView?, request: WebResourceRequest?, error: WebResourceError? ) { super.onReceivedError(view, request, error) Log.d(TAG, "onReceivedError: request= " + request.json()) Log.d(TAG, "onReceivedError: error= " + error.json()) }}webview.loadUrl("https:///newspage/da…

整体来看,仍旧是符合URI规则的。这样的话就可以考虑使用Intent处理的方式了。

webview.webViewClient = object : WebViewClient() { override fun shouldOverrideUrlLoading( view: WebView?, request: WebResourceRequest? ): Boolean { Log.d(TAG, "shouldOverrideUrlLoading: ${request.json()}") if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Log.d(TAG, "shouldOverrideUrlLoading: url->${request?.url}") if (view != null && request?.url?.toString() != null) { if (request.url.toString().startsWith("http")) { view.loadUrl(request.url.toString()) } else { try { Log.d(TAG, "shouldOverrideUrlLoading: 开始跳转") startActivity(Intent(Intent.ACTION_VIEW, request.url)) } catch (e: Exception) { Log.d(TAG, "shouldOverrideUrlLoading: ${e.json()}") } } } } return true }

运行查看效果如下:

从结果来看,能跳转至百度的App,假定成立。 也就是针对非http协议地址的情况,可使用 startActivity(Intent(Intent.ACTION_VIEW, request.url)) 之类来进行协议内容处理。

四 总结

最后,根据自家业务来定协议并处理,毕竟不是谁都愿意自家用户跳出自家App的。

以上就是Android WebView如何判定网页加载的错误的详细内容,更多关于Android WebView判定网页加载的错误的资料请关注其它相关文章!

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章