안녕하세요. 팀드모네입니다.
오늘은 webview에서 Alert가 동작하지 않는 문제 해결 방법에 대해서 공유드립니다.
웹뷰 세팅에서 javascript를 사용할 수 있도록 설정해도 Alert가 되는 것은 다른 문제입니다. onJsAlert를 사용하여 처리하는 방법도 있으나, 그냥.. 심플하게 처리하겠습니다. Alert의 디자인적 커스텀이 필요하시면, onJSAlert말고 SweetAlert2 등 Modal로 승부하는 것이 개인적으로 옳다고 판단됩니다.
1. webview에서 Alert가 되도록 설정
1.1 웹뷰 세팅 추가
-> webview에 WebChromeClient() 옵션을 추가하시면 됩니다.
webView.setWebChromeClient(WebChromeClient())
1.2 소스코드 전문
혹시 몰라, webView 관련 onCreate 코드까지 첨부드립니다. 작업에 도움이 되시길 바랍니다.
override fun onCreate(savedInstanceState: Bundle?) {
// 와이파이 & 데이터 연결되어 있으면 웹뷰 생성
if(getNetworkConnected(applicationContext) ) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
webView = findViewById<WebView>(R.id.main_web_view)
webView.webViewClient = WebViewClient()
webView.setWebChromeClient(WebChromeClient())
webView.settings.javaScriptEnabled = true
webView.addJavascriptInterface(bridge, "AndroidBridge")
webView.getSettings().setUserAgentString("Chrome/56.0.0.0 Mobile");
bridge.setListener(this)
webView.loadUrl("https://test.com")
} else {
// 인터넷 연결 되어 있지 않을 때 (셀룰러/와이파이)
showToast("인터넷 연결 상태를 확인해주세요.");
finish() // Activity 종료
}
}