안녕하세요.
오늘은 안드로이드 개발중 웹뷰를 사용하여 개발할때 반드시 알아두어야 할 녀석이죠.
'ShouldOverrideUrlLoading' 바로 이놈입니다.
웹뷰 사용시 이부분을 거치지 않으면 빈깡통 같은 웹뷰가 될것입니다.
따라서 여기서 특정한 동작을 컨트롤 하면 되는데요.
이녀석은 보통 아래와 같이 사용합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
/**
* WebViewClient
*/
private inner class WebClient : WebViewClient() {
override shouldOverrideUrlLoading(view:WebView , url:String) {
//...
return true
}
}
|
그런데 이 'shouldOverrideUrlLoading' 라는 녀석이 사실은 꽤 오래전 deprecation 되었습니다.
어? 그럼 뭘쓴단말이야?
바로 이놈으로 바뀌었습니다.
'shouldOverrideUrlLoading(WebView view, WebResourceRequest request)'
(뭔차이야 이게??? 장난해?? 자세히 보면 다릅니다.)
어? url? 은 어디갔죠???
request.url 객체를 꺼내서 쓰면 됩니다.
자 그럼 여기서 끝일까요?
문제는 또 있습니다.
안드로이드는 minSdk, TargetSdk 라는것을 설정하는데요. 우리의 앱이 API 24 이하를 지원한다면
에휴... 안타깝게도 코드 한줄 더 추가해주셔야 합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
@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
}
|
자동으로 좀 해주면 안되겠니?
안드로이드는 개발하면 할수록 불친절 합니다^^;;
그럼 여기서 끝인가요??
아뇨.
문제는 또 있습니다.
문제라기 보다 주의 사항정도로 보시죠
처음 shouldOverrideUrlLoading 를 생성하게 되면 super.shouldOverrideUrlLoading를 호출 하기도 하는데요.
이는 해당 메서드가 버전별로 여러번 호출될수 있으니
shouldOverrideUrlLoading 을 작성했다는것은 내가 웹 로드 를 컨트롤 하겠다는 의미 이므로 super를 따로 호출하지 않도록 합니다.
이상 안드로이드 지식공유 였습니다.
'개발 코딩 정보 공유 > 안드로이드 자바 코틀린' 카테고리의 다른 글
웹뷰뿌시기 (webview) 파일업로드(사진업로드) (0) | 2020.06.01 |
---|---|
웹뷰뿌시기(webview) 자주 쓰는 10가지 셋팅 (3) | 2020.05.26 |
코틀린사용 - 자바static, 객체식, 객체선언, 컴패니언 (0) | 2019.03.31 |
안드로이드 쓰레드 실체 파악하기 (0) | 2019.03.19 |
다형성의 쉬워 보이는 이해^^; (0) | 2019.03.18 |