본문 바로가기

Snippets

[Android] Webview에서 새로운 창을 열때

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

android webview로 작업된 프로젝트에서 간혹 ipin 인증이나 결제 모듈 팝업, sms 인증 팝업을 띄워야 할 때가 있다.

이 경우 webChromeClient의 onCreateWindow를  Override하여야 하며 webview setting을 다음과 같이 변경해야 한다.


1. Webview Setting 변경

WebSettings settings = webView.getSettings();

settings.setJavaScriptEnabled(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
settings.setSupportMultipleWindows(true);


2. WebChromeClient에 onCreateWindow Override

@Override
public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
    WebView newWebView = new WebView(MainActivity.this);
    WebSettings webSettings = newWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);

    final Dialog dialog = new Dialog(MainActivity.this);
    dialog.setContentView(newWebView);
    dialog.show();

    newWebView.setWebChromeClient(new WebChromeClient() {
        @Override
        public void onCloseWindow(WebView window) {
            dialog.dismiss();
        }
    });

    ((WebView.WebViewTransport)resultMsg.obj).setWebView(newWebView);
    resultMsg.sendToTarget();
    return true;
}