| 웹뷰화면에서 임의 도메인을 제외한 사이트는 외부 브라우저로 |
|
|
 |
10년 전 |
아래의 코드는 http://developer.android.com/guide/webapps/webview.html#HandlingNavigation 내용을 참고로 함.
shouldOverrideUrlLoading() method를 override 함.
1. 클릭한 링크정보에서 호스트 도메인 주소를 추출
2. 호스트 도메인이 기준 문자열(임의 도메인)보다 작으면 전혀 다른 사이트로 간주하고 외부 브라우저를 호출
3. 호스트 도메인과 기준 문자열을 비교해서 같은 도메인이라면, webview 내에서 페이지 로드하고, 일치하지 않으면 외부 브라우저를 호출
여기서 차용한 method는 regionMatches() 인자값에 따라서 두가지 버전이 제공하는데, 가능하면 대소문자 구분하지 않게 처리하는 방식이 더 나을 듯.
아래는 코드 샘플.
class HelloWebViewClient extends WebViewClient {
String localUri = "http://www.example.com";
int localUriLength = localUri.length();
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
String tempUri = Uri.parse(url).getHost().toString();
int tempUriLength = tempUri.length();
if (tempUriLength < localUriLength) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
} else {
if (tempUri.regionMatches(true, tempUriLength-localUriLength, localUri, 0, localUriLength)) {
return false;
} else {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
}
}
} |
|
추천 : 471 |
추천
목록
|
|