안드로이드[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 관하여 게시물 있으니 궁금하면 참고가능

2022.02.14 - [안드로이드[Java | Kotlin]] - [Java/Kotlin] volley Request POST값 전달 (Stringrequest, JSONrequest)