Notice
Recent Posts
Recent Comments
Link
투케이2K
80. (TWOK/LOGIC) [android] 안드로이드 웹뷰 (webview) onCreateWindow (window open) 이벤트 감지 및 외부 링크 전환 로직 본문
투케이2K 로직정리
80. (TWOK/LOGIC) [android] 안드로이드 웹뷰 (webview) onCreateWindow (window open) 이벤트 감지 및 외부 링크 전환 로직
투케이2K 2024. 10. 12. 09:14[로직 정리]
정리 로직 : Android / 안드로이드
상태 : [android] 안드로이드 웹뷰 (webview) onCreateWindow (window open) 이벤트 감지 및 외부 링크 전환 로직
[설 명]
// --------------------------------------------------------------------------------------
[사전) 설정 및 정보 확인 사항]
// --------------------------------------------------------------------------------------
- 안드로이드 특정 URL 을 로드 하기 위한 웹뷰 클래스 생성 필요
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[로직 설명]
// --------------------------------------------------------------------------------------
1. 안드로이드 웹뷰 클래스에서 웹뷰 멀티 윈도우 창 표시 설정 수행
>> main_webview.getSettings().setJavaScriptEnabled(true);
>> main_webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
>> main_webview.getSettings().setSupportMultipleWindows(true);
2. window open 이벤트 감지를 위한 웹뷰 setWebChromeClient 크롬 클라이언트 생성 및 onCreateWindow 이벤트 등록 실시
main_webview.setWebChromeClient(new WebChromeClient() {
// TODO [웹뷰 [window open] 새창 열기 이벤트 확인]
@Override
public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
// [자식 WebView 생성 및 실시간 URL 로드 상태 확인]
WebView mWebViewPop = new WebView(view.getContext());
mWebViewPop.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
S_Log._fileSave_(null, true, "웹뷰 [window open] 새창 열기 주소 확인", new String[]{ "URL :: " + String.valueOf(url) });
// [로직 처리 수행 부분]
return true;
}
});
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(mWebViewPop);
resultMsg.sendToTarget();
// -------------------------------------------------------------
return true; // [로직 종료]
// -------------------------------------------------------------
}
});
3. 자식 WebView shouldOverrideUrlLoading 에서 실시간 URL 로딩 주소 확인 및 http , https 가 포함 된 경우 외부 링크로 호출 수행
// [url 체크 수행 실시]
if(url.contains("http://") || url.contains("https://")){
// [외부 링크 이동]
C_MoveApp.goChromeBrowser(C_CommonWebview.this, url);
}
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------
[안드로이드 웹뷰 유틸 클래스]
https://blog.naver.com/kkh0977/222680670897?trackingCode=blog_bloghome_searchlist
// --------------------------------------------------------------------------------------
반응형
'투케이2K 로직정리' 카테고리의 다른 글
Comments