WebView window.open() 처리

Android 2015. 8. 21. 19:06

iOS 와 마찬가지로 Android 에서도 휴대폰 인증, 우편번호 찾기 등에서 window.open 이 되지 않는 문제가 발생.

WKWebView 에서 한것 처럼 window 처리를 위한 method 들(WebChromeClient)을 구현 하여서 해결.

iOS는 없는 Window Close 에 대한 메소드도 있다.

관리하기가 훨씬 더 쉬움.


// 웹뷰 세팅
// 팝업(window.open) 허용. setJavaScriptCanOpenWindowsAutomatically만 설정하는 경우 Main WebView에 Url 이 로딩되므로 setSupportMultipleWindows 설정 후 onCreateWindow를 Override 해야 함.
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setSupportMultipleWindows(true);

// 메소드 구현

public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
WebView newWebView = new WebView(view.getContext());
configurateWebView(newWebView);

.... 웹뷰 구성

mWebViewContainer.addView(newWebView);    // 화면에 보여질 수 있도록 add view

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

@Override
public void onCloseWindow(WebView window) {
super.onCloseWindow(window);

mWebViewContainer.removeView(window);    // 화면에서 제거
}


'Android' 카테고리의 다른 글

[EditText] maxLines not working with digits  (0) 2017.01.31
Post Method 를 이용하여 Login 하기  (0) 2015.09.07
Debugging Native Memory Use  (0) 2015.08.26
onTrimMemory() Level  (0) 2015.08.25
WebView window.open() 처리  (0) 2015.08.21
WebView 튕김 현상  (0) 2015.08.10
Android WebView 크롬을 이용하여 디버그 하기 (KitKat 이상)  (1) 2015.07.21
View의 터치 영역 변경  (0) 2015.06.19
Flavor in gradle  (0) 2015.06.19
View Lifecycle  (0) 2015.06.19
ListView > Remove Animation  (0) 2015.06.16
posted by ymson