Uing? Uing!!

[안드로이드 팁] WebView에서 window.close() 이벤트 받아서 창 닫기 본문

Android

[안드로이드 팁] WebView에서 window.close() 이벤트 받아서 창 닫기

Uing!! 2020. 12. 17. 04:09
반응형

WebView

모바일 웹은 javascript를 기반으로 동작한다.

웹뷰는 이런 모바일웹을 안드로이드 앱 내에서 보여주는 View이다.

 

기본적으로 html, css, js를 기반으로 만들어져 있는 만큼,

안드로이드 네이티브 코드에서는 수정할 수 있는 부분이 거의 없다.

단지 웹뷰 내에서의 몇몇 이벤트를 인식하고 반응하는 정도의 활용이 가능하다.

WebView의 close 이벤트를 인식하지 못하는 경우

웹뷰에서는 분명히 window.close()가 호출되고 있는데, 안드로이드 화면에서 웹뷰가 닫히지 않는 경우가 있다.

웹뷰 안에서 다른 창을 여는 경우에 이런 상황이 발생하게 된다.

 

이를 해결하기 위해서는 아래처럼 웹뷰에 webChromeClient를 달아 주고, 

onCloseWindow를 오버라이딩하여 화면을 닫아 주면 된다.

 

webView.setWebChromeClient(WebChromeClient(){
    override fun onCloseWindow(window: Window) {
    	super.onCloseWindow(window);
        // 웹뷰 화면을 닫는다.
   	}
)

 

웹뷰 화면이 어떻게 구성되어 있냐에 따라 화면을 종료하는 로직이 달라질 수 있음을 염두에 두어서,

화면 닫기 부분은 주석으로 남겨 두었다.

반응형
Comments