[TIL]Android WebView

mandoofu·2024년 10월 11일

안드로이드

목록 보기
14/20
post-thumbnail

WebView

  • 안드로이드 플랫폼에서 웹페이지를 연동하기 위한 위젯의 한 종류

  • 온라인/오프라인 양쪽 다 지원, 오프라인 지원은 assets 폴더에 html,css,image,JS파일을 담는 역할로 사용

  • AndroidMenifest.xml 파일에 ndroid:usesCleartextTraffic="true“ 추가 하여 HTTP NOT PERMITTED 에러를 해결할 수 있다.

-XML 구성

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
	xmlns:app="http://schemas.android.com/apk/res-auto"
	xmlns:tools="http://schemas.android.com/tools"
	android:layout_width="match_parent"
	android:layout_height="match_parent"
	tools:context=".WebViewBasic">
	<WebView
      android:id="@+id/webView"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      />
</RelativeLayout>

-Main 구성

class WebViewBasic : AppCompatActivity() {
	private lateinit var binding: ActivityWebViewBasicBinding
		override fun onCreate(savedInstanceState: Bundle?) {
		super.onCreate(savedInstanceState)
		binding = ActivityWebViewBasicBinding.inflate(layoutInflater)
		setContentView(binding.root)
          with(binding.webView){
          settings.javaScriptEnabled = true
          webViewClient = WebViewClient()
          loadUrl("https://m.kbinsure.co.kr/")
          //loadUrl("https://m.nate.com");
		}
	}
}
  • WebSettings

    • setAllowFileAccess(false) : 웹뷰에서 안드로이드 파일 시스템 접근 설정
    • setCacheMode :
      • LOAD_CACHE_ELSE_NETWORK :기간이 만료된 캐쉬를 서버에서 가져옴
        - LOAD_CACHE_ONLY : 네트워크를 사용하지 않고 캐시를 불러옴
        - LOAD_DEFAULT : 기본 모드이며 캐시가 존재하면 캐쉬를 사용하고 만료된 경우서버를 통해 가져옴
        - LOAD_NO_CACHE : 캐쉬를 사용하지 말고 서버에서 가져옴(개발 시 사용)
  • WebViewClient : WebView 동작 중 이벤트 콜백을 등록 할 수 있음

    • shouldOverrideUrlLoading(WebView view,WebResourceRequestrequest)
      - WebView에 URL이 Load 시 현재 앱에 안드로이드는 제어권을 부여하는 것이 기본이며 허락하지 않는 URL 이나 POST 요청등을 제어(Load Cancel 등)할 수 있는 콜백 함수

0개의 댓글