WebView를 사용할 때 페이지 접속 상태를 체크하는 방법이 있는데 WebViewClient 를 사용하는 것이다.
WebViewClient에는 다양한 method가 있어 이를 활용하면 된다.
상세한 method는 Android Developers 사이트에서 확인할 수 있다.
mWebView?.apply {
webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
loadUrl(URL)
Log.v("WebView Log", "WebView Log shouldOverrideUrlLoading")
return true
}
override fun onPageStarted(
view: WebView?,
url: String?,
favicon: Bitmap?
) {
super.onPageStarted(view, url, favicon)
Log.v("WebView Log", "WebView Log onPageStarted")
}
override fun onPageFinished(view: WebView?, url: String?) {
super.onPageFinished(view, url)
Log.v("WebView Log", "WebView Log onPageFinished")
}
@RequiresApi(Build.VERSION_CODES.M)
override fun onReceivedError(
view: WebView?,
request: WebResourceRequest?,
error: WebResourceError?
) {
super.onReceivedError(view, request, error)
Log.v("WebView Log", "WebView Log onReceivedError")
Toast.makeText(
context,
"페이지와 연결이 되지 않습니다. \nError: ${error?.description.toString()}",
Toast.LENGTH_LONG
).show()
activity?.finish()
}
}
}?.run {
loadUrl(URL)
}
본인은 WebView에서 새로운 Url 접속 체크(shouldOverrideUrlLoading), 로딩 시작(onPageStarted), 로딩 완료(onPageFinished), 에러 사항 체크(onReceivedError) 정도를 체크하였다.