투케이2K

942. (Android/Java) [build 24] Webview 웹뷰 shouldOverrideUrlLoading url string deprecated 대응 소스 코드 본문

Android

942. (Android/Java) [build 24] Webview 웹뷰 shouldOverrideUrlLoading url string deprecated 대응 소스 코드

투케이2K 2025. 1. 22. 19:46

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Java / Kotlin

 

[소스 코드]

// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------

- 언어 : Java / Kotlin

- 개발 툴 : AndroidStudio

- 기술 구분 : Webview / WebViewClient / shouldOverrideUrlLoading

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[사전) 필요 설정]
// --------------------------------------------------------------------------------------

/**
  * // -------------------------------------------------------
  * 1. AndroidManifest.xml 파일 필요 퍼미션 :
  *
  * <uses-permission android:name="android.permission.INTERNET"/>
  * <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
  * <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  * // -------------------------------------------------------
  * 2. 참고 사이트 :
  *
  * https://blog.naver.com/kkh0977/222680670897
  *
  * https://blog.naver.com/kkh0977/222726194788?trackingCode=blog_bloghome_searchlist
  *
  * // -------------------------------------------------------
  * */

// --------------------------------------------------------------------------------------





// --------------------------------------------------------------------------------------
[소스 코드]
// --------------------------------------------------------------------------------------

1. 사전) WebViewClient 웹 클라이언트 클래스 정의 필요


2. AS-IS 기존 소스 코드 : 

// [새로운 URL이 webview에 로드되려 할 경우 컨트롤을 대신할 기회를 줌]
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {

  // TODO [SMS 인텐트 이동 실시 : if(url.startsWith("sms:010-5678-1234")]
  if (url.startsWith("sms:")) {
      // ----------------------------------
      // [Intent 로직 처리]
      // ----------------------------------
      return true;
      // ----------------------------------
  }


  // TODO [전화 다이얼 인텐트 이동 실시 : if(url.startsWith("tel:010-1234-5678")]
  if(url.startsWith("tel:")){
      // ----------------------------------
      // [Intent 로직 처리]
      // ----------------------------------
      return true;
      // ----------------------------------
  }


  // TODO [Mail (Gmail) 인텐트 이동 실시 : if(url.startsWith("mailto:honggildung@test.com?subject=tittle&body=content")]
  if(url.startsWith("mailto:")){
      // ----------------------------------
      // [Intent 로직 처리]
      // ----------------------------------
      return true;
      // ----------------------------------
  }


  // ----------------------------------
  view.loadUrl(url);
  // ----------------------------------


  // ----------------------------------
  return false;
  // ----------------------------------

}


3. TO-BE 변경 소스 코드 : 

// [새로운 URL이 webview에 로드되려 할 경우 컨트롤을 대신할 기회를 줌]
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
  String url = request.getUrl().toString(); // [Get Web Url]

  // TODO [SMS 인텐트 이동 실시 : if(url.startsWith("sms:010-5678-1234")]
  if (url.startsWith("sms:")) {
      // ----------------------------------
      // [Intent 로직 처리]
      // ----------------------------------
      return true;
      // ----------------------------------
  }


  // TODO [전화 다이얼 인텐트 이동 실시 : if(url.startsWith("tel:010-1234-5678")]
  if(url.startsWith("tel:")){
      // ----------------------------------
      // [Intent 로직 처리]
      // ----------------------------------
      return true;
      // ----------------------------------
  }


  // TODO [Mail (Gmail) 인텐트 이동 실시 : if(url.startsWith("mailto:honggildung@test.com?subject=tittle&body=content")]
  if(url.startsWith("mailto:")){
      // ----------------------------------
      // [Intent 로직 처리]
      // ----------------------------------
      return true;
      // ----------------------------------
  }


  // ----------------------------------
  view.loadUrl(url);
  // ----------------------------------


  // ----------------------------------
  return false;
  // ----------------------------------

}

// --------------------------------------------------------------------------------------




// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

// [안드로이드 웹뷰 유틸 파일]

https://blog.naver.com/kkh0977/222680670897


// [안드로이드 쿠키 설정 및 웹뷰 로드 수행 실시 클래스]

https://blog.naver.com/kkh0977/222726194788?trackingCode=blog_bloghome_searchlist

// --------------------------------------------------------------------------------------
 
반응형
Comments