조건
Url에서 특정 패턴을 추출해서 시스템 브라우저를 호출한다.
Webview에 WebViewClient 를 설정하고
webView.setWebViewClient(new TestWebViewClient());
해당 패턴이 포함되어 있을경우 시스템 브라우저를 호출한다.
private class TestWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.indexOf("___target=_blank") > -1){
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
context.startActivity(i);
return true;
}
return super.shouldOverrideUrlLoading(view, url);
}
}
Kitkat이전까지 이 방법으로 호출하였으나 문제는 킷캣 ( 4.4 kitkat ) 이상에서는 이 방법이 통하지 않습니다...
4.4부터 구글의 크롬엔진이 변경되어서 그렇다는 글을 검색을 통해서 확인하였고
여기저기 뒤져보다가 해결책을 발견...
webView에 웹 크롬 클라이언트를 설정..
webView.setWebChromeClient(new TestWebChromeClient());
새 창이 열리는 액션을 잡아서 해당 패턴일경우 새창에 띄워줍니다.
private class TestWebChromeClient extends WebChromeClient {
}
상기 두부분을 그대로 유지를 해둬야 4.4 이상에서도 동작하고 4.4 미만에서도 동작을 합니다.