-
[안드로이드 kotlin] webview 에 팝업 나타나게 하기안드로이드(kotlin)/UI 2022. 9. 19. 12:00
webview 작업을 하는데 웹브라우저에서는 잘 나타나는 popup 이 webview 에서는 안나타나는 증상이 있어습니다.
왜 이런건가 알아보니까 WebChromeClient 를 추가해줘야 popup 이 나타난다고 하네요.
onCreate 메서드 안에 아래 코드를 추가하니까 popup 이 잘 나타납니다.
val chromeClient = WebChromeClient()
만약 웹브라우저에서 만든 popup 외에 안드로이드에서 직접 만들어서 표시하고싶은 경우에는 WebChromeClient 를 상속 받아서 직접 구현하면 됩니다.
class MyWebChromeClient: WebChromeClient() { override fun onCreateWindow( view: WebView?, isDialog: Boolean, isUserGesture: Boolean, resultMsg: Message? ): Boolean { return super.onCreateWindow(view, isDialog, isUserGesture, resultMsg) } override fun onJsAlert( view: WebView?, url: String?, message: String?, result: JsResult? ): Boolean { // return super.onJsAlert(view, url, message, result) AlertDialog.Builder(view?.context, R.style.webviewAlertDialog) .setTitle("알림") .setMessage(message) .setPositiveButton("ok", DialogInterface.OnClickListener { dialog, which -> result?.confirm() }) .setCancelable(false) .create() .show() return true } override fun onJsConfirm( view: WebView?, url: String?, message: String?, result: JsResult? ): Boolean { // return super.onJsConfirm(view, url, message, result) AlertDialog.Builder(view?.context, R.style.webviewAlertDialog) .setTitle("알림") .setMessage(message) .setPositiveButton("확인", DialogInterface.OnClickListener { dialog, which -> result?.confirm() }) .setCancelable(false) .create() .show() return true } }
이런식으로 클래스를 하나 만든 뒤에 사용할 곳에서 호출하여 사용하면 됩니다.
val chromeClient = MyWebChromeClient()
위에서는 WebChromeClient 를 불러왔지만 직접 만든 내용을 불러와서 쓰면 커스텀 다이얼로그를 적용할 수 있습니다.
'안드로이드(kotlin) > UI' 카테고리의 다른 글
버튼 색상이 보라색으로 고정 되어서 다른색으로 변경되지 않을 때 (0) 2022.08.23 [안드로이드 kotlin] 안드로이드 스튜디오 xml 디자인에서만 보이게 하기 (0) 2021.05.17 [android - kotlin] 색상 표현 방법 (0) 2021.01.02