본문 바로가기
Android

[Android]Kotlin - WebView 사용하기

by bryan.oh 2023. 8. 16.
반응형

 

AndroidManifest.xml 에서 다음 권한을 추가해줍니다.

<uses-permission android:name="android.permission.INTERNET" />

 

Activity 를 하나 생성합니다.

layout 파일에서 WebView 를 검색해서 추가합니다.

또는 직접 코드 추가.

 

<WebView
    android:id="@+id/webview"
    android:layout_width="409dp"
    android:layout_height="729dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

 

아래는 Activity 의 코드입니다.

class WebViewActivity : AppCompatActivity() {
    private lateinit var binding: ActivityWebViewBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityWebViewBinding.inflate(layoutInflater)
        setContentView(binding.root)

        binding.webview.webViewClient = WebViewClient()
        binding.webview.loadUrl("https://hello-bryan.tistory.com")
    }
}

 

그리고 실행해보면,

 

그 외 셋팅.

binding.webview.apply {
    webViewClient = WebViewClient() // 링크 클릭시 새창 띄우기 방지
    webChromeClient = WebChromeClient() // 크롬환경에 맞는 세팅(ex, alert)
    settings.javaScriptEnabled = true // 자바스크립트 허용
    settings.javaScriptCanOpenWindowsAutomatically = false
    settings.setSupportMultipleWindows(false) // 새창 띄우기 허용 여부
    settings.loadsImagesAutomatically = true // 웹뷰가 앱에 등록되어 있는 이미지 리소스를 자동으로 로드
    settings.useWideViewPort = true // 화면 사이즈 맞추기 허용 여부
    settings.loadWithOverviewMode = true // 메타태그 허용 여부
    settings.setSupportZoom(true) // 화면 줌 허용여부
    settings.builtInZoomControls = false // 화면 확대 축소 허용여부
    settings.displayZoomControls = false
    settings.cacheMode = WebSettings.LOAD_NO_CACHE // 웹뷰의 캐시 모드
    settings.domStorageEnabled = true // 로컬 스토리지 사용 여부를 설정
    settings.allowContentAccess // 웹뷰 내에서 파일 액세스 활성화 여부
    settings.userAgentString = "app" // 웹에서 해당 속성을 통해 앱에서 띄운 웹뷰로 인지 할 수 있도록 함
    settings.defaultTextEncodingName = "UTF-8" // 인코딩 설정
    settings.databaseEnabled = true //Database Storage API 사용 여부 설정
    /**
    1. LOAD_CACHE_ELSE_NETWORK 기간이 만료돼 캐시를 사용할 수 없을 경우 네트워크를 사용합니다.
    2. LOAD_CACHE_ONLY 네트워크를 사용하지 않고 캐시를 불러옵니다.
    3. LOAD_DEFAULT 기본적인 모드로 캐시를 사용하고 만료된 경우 네트워크를 사용해 로드합니다.
    4. LOAD_NORMAL 기본적인 모드로 캐시를 사용합니다.
    5. LOAD_NO_CACHE 캐시모드를 사용하지 않고 네트워크를 통해서만 호출합니다.
     */
}

 

 

728x90
반응형

댓글