안드로이드 개발을 진행하다 보면, WebView을 사용하는 일이 많다.
아래와 같이 뉴스 기사의 원문링크나, 하이퍼텍스트 기능과 같이 링크가 포함된 키워드를 클릭하면 새 창이 띄워지는 것을 원할 때가 있다.
<a href target="_blank"> 원문링크 </a>
그러나 shouldOverrideUrlLoading()을 사용하기 위해 webView.setWebViewClient(new WebViewClient()); 을 사용할 경우 자동으로 외부 브라우저로 내용을 보여주지 않는다.
이러한 경우에는 다음과 같이 처리하면 외부브라우저로 내용을 띄울 수 있다.
1. 새 창을 띄우기 위해선, webView.getSettings().setSupportMultipleWindows(true) 로 설정
2. setWebChromeClient() 함수 내 onCreateWindow()에 아래와 같이 처리한다.
WebSettings ws = webView.getSettings();
ws.setSupportMultipleWindows(true);
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return super.shouldOverrideUrlLoading(view, url);
}
});
webView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, Message resultMsg) {
Logger.d(TAG, "onCreateWindow ");
WebView newWebView = new WebView(getContext());
WebView.WebViewTransport transport = (WebView.WebViewTransport)resultMsg.obj;
transport.setWebView(newWebView);
resultMsg.sendToTarget();
return true;
}
});
'안드로이드' 카테고리의 다른 글
[Kotlin] 코틀린 익스텐션 사용하기 (kotlin-android-extensions) (0) | 2021.01.20 |
---|---|
[Android] 딥링크(Deep Link) 파헤치기 (0) | 2020.12.09 |
Android Studio 4.1.1 업데이트 이후 오류 발생 및 해결책 (0) | 2020.11.14 |
Caused by: java.lang.IllegalStateException: Expected Android API level 21+ but was 19 - 오류 해결책 (Feat. Android Query) (0) | 2020.10.30 |
Didn't find class "com.google.firebase.provider.FirebaseInitProvider" 오류 해결책 (0) | 2020.10.30 |
댓글