본문 바로가기
개발노트/Android

[Kotlin] java script Alert & Confirm 띄우기

by 전지적진영시점 2023. 2. 19.
반응형

개발 환경

---------------------------------

OS : Mac

개발 툴 : Android Studio

개발 언어 : Kotlin

targetSdk : 31

minSdk : 23

---------------------------------

 

android #WebView에서 자바스크립트 alert과 confirm을 받아오는 방법을 포스팅하겠습니다

 

javascript에서 
  • Confirm 함수는 확인 또는 취소 버튼을 통해 true or  false 를 반환합니다
  • Alert 함수는 사용자에게 단순하게 어떠한 내용을 알릴 때 사용하는 함수입니다

 

안드로이드 웹뷰가 자바스크립트 alert과 confirm 에 반응하려면 

웹뷰에 셋팅을 해줘야 하는데 그 부분을 알아보겠습니다!

 

🐥 Alert을 받을 함수를 만듭니다

 

fun onJsAlert(message : String, result : JsResult) : Unit{
    val builder = AlertDialog.Builder(this)
    builder.setTitle(resources.getString(R.string.notice))
    builder.setMessage(message)

    val listener = DialogInterface.OnClickListener { _, clickEvent ->
        when (clickEvent) {
            DialogInterface.BUTTON_POSITIVE ->{
                result.confirm()
            }
        }
    }
    builder.setPositiveButton(android.R.string.ok, listener)
    builder.show()
}

 

 

🐥 Confirm을 받을 함수를 만듭니다

 

 

fun onJsConfirm(message : String, result : JsResult) : Unit {
    val builder = AlertDialog.Builder(this)
    builder.setTitle(resources.getString(R.string.notice))
    builder.setMessage(message) // 버튼 클릭 이벤트

    val listener = DialogInterface.OnClickListener { _, clickEvent ->
        when (clickEvent) {
            DialogInterface.BUTTON_POSITIVE ->{
                result.confirm()
            }
            DialogInterface.BUTTON_NEUTRAL -> {
                result.cancel()
            }
        }
    }
    builder.setPositiveButton(android.R.string.ok, listener)
    builder.setNeutralButton(android.R.string.cancel, listener)
    builder.show()
}

 

 

그 후 onCreate() 함수에서 웹뷰 클라이언트를 생성해주고 위에서 맘든 onJsAlert 와 onJsConfirm 함수를 override 해줍니다!

mainWebViewBinding.webView.webChromeClient = object : WebChromeClient(){
    override fun onJsAlert(view: WebView?, url: String?, message: String?, result: JsResult?): Boolean {
        onJsAlert(message!!, result!!)
        return true
    }
    override fun onJsConfirm(view: WebView?, url: String?, message: String?, result: JsResult?): Boolean {
        onJsConfirm(message!!, result!!)
        return true }
}

 

 

이렇게하면 자바스크립트 Alert과 Confirm을 받을 수 있습니다.

반응형

댓글