안드로이드[Java | Kotlin]
[Kotlin] 안드로이드 웹뷰 (WebChromeClient) onConsoleMessage 함수 적용하기 (feat. Volley)
티라미주
2022. 2. 11. 14:25
기존에 자바로 만들어놓은 테스트용 코드를
코틀린으로 마이그레이션하는데 한참 고민하다가
이것저것 하다보니 성공해서 올려놓음.
onclosewindow, createwindow 다 적용가능
1. onCretae내부선언
binding.mWebView.setWebViewClient(WebViewClient())
binding.mWebView.setWebChromeClient(webChromeClient())
binding.mWebView.postUrl(getText(R.string.URL).toString(), postData.toByteArray())
2. inner class 정의 (feat. Volley)
inner class webChromeClient : WebChromeClient() {
override fun onConsoleMessage(consoleMessage: ConsoleMessage?): Boolean {
consoleMessage?.apply {
Log.d("webviewMsg3", "${message()} -- From line ${lineNumber()} of ${sourceId()}")
if (message() == getText(R.string.errMsg1).toString() || message() == getText(R.string.errMsg2).toString()) {
val queue = Volley.newRequestQueue(this@CertiWebView)
queue.add(jsonArrayRequest)
val intent = Intent(this@CertiWebView, CarAddActivity::class.java)
startActivity(intent)
}
}
return true
}
override fun onJsAlert(view: WebView, url: String, message: String, result: JsResult): Boolean {
if(message == getText(R.string.okMsg).toString()) {
}
Log.d("webViewMsgJS4", message)
result.cancel()
return true
}
}
onConsoleMessage 는 시스템 에러 메세지를 제공하고
onJsALert는 개발자가 사용자에게 제공하는 메세지를 출력하는거임.
+++ 참고
웹뷰 액티비티에서 정상종료 직전에 Volley 통신을 하려고 했었는데,
너무 복잡한것 같아서 별도 액티비티로 이동하여 처리하기로 함.
Volly 관하여 게시물 있으니 궁금하면 참고가능