반응형
개발 환경
---------------------------------
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을 받을 수 있습니다.
반응형
'개발노트 > Android' 카테고리의 다른 글
[Kotlin] Android 11 권한 이슈 처리 (0) | 2023.02.20 |
---|---|
[Kotlin] : 안드로이드 JWT 토큰 인증 [Retrofit, okHttp3] (0) | 2023.02.20 |
[Kotlin]JavaScript < ㅡ > Native 통신 (0) | 2023.02.17 |
[kotlin] KaKao Link Share, 카카오톡 링크 공유하기 - 2 (0) | 2023.02.17 |
[kotlin] KaKao Link Share, 카카오톡 링크 공유하기 - 1 (0) | 2023.02.17 |
댓글