안드로이드 WebView를 사용하다보면 웹뷰에서 다른 외부 링크를 클릭시 다른 웹사이트를 경유하게 되는 경우가 있다. 하지만, 이때 웹뷰에서 에러나 다른 외부 링크가 제대로 열리지 않는 경우가 많아 이럴때 다르게 동작할 수 있도록 하는 팁을 알게되었고 공유하고자 한다.
WebView 그대로 사용시
1. 내부 Url 로 WebView 실행
2. 내부에 있는 외부 링크 접속시 WebViewClient에서 제대로 동작하지 않는 부분 발생.
WebView 해결방법
위 오류를 해결하기 위해서는 내부 Url을 만날때만 Webview로 동작하게 하고, 나머지 외부 링크는 크롬탭에서 볼 수 있도록 변경 하였다.
아래 페이지의 코드를 참고하였다.
webView.webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(
view: WebView?,
request: WebResourceRequest?
): Boolean {
// request는 url 호출시마다 변경됨
val url = request?.url ?: return false
// webUrl = "www.example.com/~~"
// 내부 url일 경우 webview 사용
if (Uri.parse(webUrl).host == url.host) {
return false
}
// 외부 url일 경우 크롬탭으로 실행
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url.toString()))
startActivity(intent)
return true
}
위처럼 코드를 구성해주면 외부 링크일때는 크롬탭으로 작동하는것을 알 수 있다.
WebView를 잘 사용해 보자
728x90
최근댓글