티스토리 뷰

Snippets

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

Snipper AquaBlue 2017. 9. 21. 18:17

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;
}


댓글
댓글쓰기 폼
공지사항
최근에 달린 댓글
Total
125,391
Today
17
Yesterday
13
링크
«   2021/04   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  
글 보관함