Notice
Recent Posts
Recent Comments
Link
투케이2K
241. (AndroidStudio/android/java) webview 웹뷰 window open 새창 열기 이벤트 감지 및 외부 링크로 전환 실시 본문
Android
241. (AndroidStudio/android/java) webview 웹뷰 window open 새창 열기 이벤트 감지 및 외부 링크로 전환 실시
투케이2K 2021. 12. 24. 13:24[개발 환경 설정]
개발 툴 : AndroidStudio
개발 언어 : java
[소스 코드]
// [크롬 클라이언트 설정 실시]
main_webview.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
Log.i("---","---");
Log.w("//===========//","================================================");
Log.i("","\n"+"[A_Main >> onCreateWindow() :: 웹 브라우저 [window open] [a 태그 _blank 새창 열기] [열기] 이벤트 확인]");
Log.i("","\n"+"[url :: "+String.valueOf(main_webview.getUrl())+"]");
Log.w("//===========//","================================================");
Log.i("---","---");
// ----------------------------------
// [웹뷰 설정 옵션]
//main_webview.getSettings().setJavaScriptEnabled(true); // [자바스크립트 허용]
//main_webview.getSettings().setDomStorageEnabled(true); // [웹 스토리지 허용]
//main_webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); // [window open 허용]
//main_webview.getSettings().setSupportMultipleWindows(true); // [새창 띄우기 허용 :: onCreateWindow 호출 위함]
// ----------------------------------
WebView mWebViewPop = new WebView(view.getContext());
mWebViewPop.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.i("---","---");
Log.w("//===========//","================================================");
Log.i("","\n"+"[A_Main >> onCreateWindow() :: 웹 브라우저 [window open] [a 태그 _blank 새창 열기] [열기] 주소 감지 실시]");
Log.i("","\n"+"[수행 메소드 :: shouldOverrideUrlLoading()]");
Log.i("","\n"+"[url :: "+String.valueOf(url)+"]");
Log.w("//===========//","================================================");
Log.i("---","---");
// [url 형식 체크 수행 실시]
if(url.contains("http://") || url.contains("https://")){
// [외부 링크 이동 실시]
C_MoveApp.goChromeBrowser(A_Main.this, url);
return true;
} else {
return false;
}
}
});
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(mWebViewPop);
resultMsg.sendToTarget();
// ----------------------------------
return true;
}
@Override
public void onCloseWindow(WebView window) {
Log.i("---","---");
Log.w("//===========//","================================================");
Log.i("","\n"+"[A_Main >> onCloseWindow() :: 웹 브라우저 [window open] [a 태그 _blank 새창 열기] [닫기] 이벤트 발생]");
Log.w("//===========//","================================================");
Log.i("---","---");
super.onCloseWindow(window);
}
});
반응형
'Android' 카테고리의 다른 글
Comments