Android Studio/java
23. [안드로이드/java] 웹뷰 shouldOverrideUrlLoading을 이용하여 프로그램 제어하기
drizzle0925
2021. 10. 22. 11:32
728x90
shouldOverrideUrlLoading
shouldOverrideUrlLoading을 이용하여 특정 url에서 프로그램을 제어하는 방법에 대해서 알아봅시다.
shouldOverriedUrlLoading 메서드 안에서 특정 URL에서 특정 행동을 처리하는 경우 실행하고 시키고 싶은 코드를 작성하고 return값을 true로 지정하여 URL로드를 중단시키거나, return 값을 false로 반환하여 WebView가 평소와 같이 URL을 로드하게 할 수 있습니다.
shouldOverriedUrlLoading 코드
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
MyLog.i(TAG,"shouldOverrideUrlLoading(view:"+view+ ", request:"+request+"), request: request.getUrl().toString()"+request.getUrl().toString());
//return super.shouldOverrideUrlLoading(view, request);
return true; //true는 호스트가 제어를 하고 처리했다를 반환, false을 반환하여 WebView가 평소와 같이 URL로드를 진행하도록 처리
}
앱이 API 24 이하를 지원하는 경우
안드로이드는 minSdk, TargetSdk라는 것이 있습니다. 제작하는 앱이 API 24 이하를 지원한다면 코드를 한 줄 더 추가해야 됩니다.
(위 메서드의 파라미터인 String url을 아래에서 사용할 때는 request.url 객체를 꺼내서 사용하면 됩니다.)
@SuppressWarnings("deprecation")
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//... 구현
return true
}
@TargetApi(Build.VERSION_CODES.N)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
//... 구현
return true
}
처음 shouldOverriedUrlLoading을 생성하게 되면 super.shouldOverriedUrlLoading을 호출하기도 합니다.
버전에 따라 해당 메서드가 여러 번 호출될 수 있으니 shouldOverriedUrlLoading을 작성할 때는 따로 super를 호출하지 않도록 합니다.
728x90