Notice
Recent Posts
Recent Comments
Link
투케이2K
424. (kotlin/코틀린) Webview 웹뷰에서 window open 윈도우 오픈 새창 열기 이벤트 감지 수행 본문
[개발 환경 설정]
개발 툴 : AndroidStudio
개발 언어 : Kotlin
[소스 코드]
// -----------------------------------------
// TODO [JavaScript 의 window.open 허용]
// -----------------------------------------
main_webview!!.settings.javaScriptCanOpenWindowsAutomatically = true
main_webview!!.settings.setSupportMultipleWindows(true) // [새창 띄우기 허용]
// -----------------------------------------
// -----------------------------------------
// TODO [크롬 클라이언트 설정 실시]
// -----------------------------------------
main_webview!!.webChromeClient = object : WebChromeClient() {
// TODO [웹뷰 [window open] 새창 열기 이벤트 확인]
override fun onCreateWindow(view: WebView, isDialog: Boolean, isUserGesture: Boolean, resultMsg: Message): Boolean {
S_Log._F_(this@A_Webview, "웹뷰 [window open] 새창 열기 이벤트 발생", null)
val mWebViewPop = WebView(view.context)
mWebViewPop.webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
S_Log._F_(this@A_Webview, "웹뷰 [window open] 새창 열기 주소 확인", arrayOf(
"URL :: $url"
))
// [url 체크 수행 실시]
if (url.contains("http://") || url.contains("https://")) {
// [외부 링크 이동]
C_MoveApp.goChromeBrowser(this@A_Webview, url)
}
return true // [로직 종료]
}
}
val transport = resultMsg.obj as WebViewTransport
transport.webView = mWebViewPop
resultMsg.sendToTarget()
// -------------------------------------------------------------
return true // [로직 종료]
// -------------------------------------------------------------
}
// TODO [웹뷰 [window close] 새창 닫기 이벤트 확인]
override fun onCloseWindow(window: WebView?) {
S_Log._F_(this@A_Webview, "웹뷰 [window close] 새창 닫기 이벤트 확인", null)
try {
//window.setVisibility(View.GONE);
//window.destroy();
} catch (e: Exception) {
}
super.onCloseWindow(window)
}
}
// -----------------------------------------
반응형
'Kotlin' 카테고리의 다른 글
Comments