Developer Geek

[Android] WebView란 본문

안드로이드/View

[Android] WebView란

devGeek 2022. 6. 27. 01:30
반응형

WebView

정의

웹뷰(WebView)란 프레임워크에 내장된 웹 브라우저 컴포넌트로 뷰(View)의 형태로 앱에 임베딩하는 것을 말한다.
즉, WebView는 앱 내에 웹 브라우저를 넣는 것이다.
웹 페이지를 보기 위해서 혹은 앱 안에서 HTML을 호출하여 앱을 구현하는 하이브리드 형태의 애을 개발하는데에도 많이 사용된다.

하이브리드 앱

👍 장점

하이브리드 앱은 안드로이드 네이티브 앱 개발에 비해서 개발이 비교적 쉽다.
특히 기기간의 호환성을 해결하기가 상대적으로 편하다.
타 웹 사이트 링크로 가는 기능등을 지원하기 위해서 많이 사용된다.

👎 단점

HTML 기반인 만큼 상대적으로 반응성이 약하고, 애니메이션등의 다양한 UI 효과를 넣기 어렵다.
OS에 맞게 일부 기능들을 제외하고 작게 만든 웹 브라우저로 HTML5 호환성 등 기능의 제약을 많이 가지고 있다.

 

Android SwipeRefreshLayout In Kotlin(당겨서 새로고침)

SwipeRefreshLayout 개요 Swiperefreshlayout 를 이용하면 스와이프(드래그)하여 새로고침 UI 패언틀 구현할 수 있다. 앱 화면을 위에서 아래로 드래그 하면, delayMillis(1.5s) 동안 새로고침 UI 패턴이 동작한다.

devgeek.tistory.com

 

Android 배송추적 WebView in Kotlin

개요 시나리오 배송업체 와 송장번호 를 입력 후, 배송조회 버튼 클릭 시 네이버에서 택배의 배송 상태를 추적한다. 실행영상 프로젝트 구조 ViewBinding, Coil 사용 - In build.gradle(:app) ViewBinding을 사

devgeek.tistory.com

개발 참고 사항

인터넷 접근 권한 허용

AndroidManifest.xml 파일에서 manifest 태그 안에 <uses-permission android:name="android.permission.INTERNET" />를 추가해야 앱에서 인터넷을 통신을 사용할 수 있다.

에러: ERR_CLEARTEXT_NOT_PERMITTED

원인

웹뷰가 실행되었지만, ERR_CLEARTEXT_NOT_PERMITTED와 같은 에러가 발생할 때가 있다. 그 이유는 URL을 통해서 웹 페이지를 로드하는데 https가 아닌 http 프로토콜을 사용하여 보안이 취약하기 때문이다.

해결방법

이를 해결하기 위해서는 AndroidManifest.xml 파일에서 application태그 속성으로 android:usesCleartextTraffic="true"를 추가해야 한다.

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.SearchDeliveryInfoApplication"
        android:usesCleartextTraffic="true">

에러: 앱이 아닌 기본 웹 어플리케이션에서 열리는 웹 페이지

해결방법

내가 만든 WebView의 속성 값 중 webViewClient를 안드로이드 SDK에서 제공하는 WebViewClient로 덮어씌운다.

binding.webView.webViewClient = WebViewClient()
...
binding.webView.loadUrl("https://google.com")

에러: 웹뷰에서 보여지는 웹 페이지의 버튼 작동 X

원인

Android에서는 기본적으로 보안을 위해 JavaScript를 허용하지 않는다.

해결방법

WebView를 초기화 할 때, JavaScript 사용을 허용한다.

binding.webView.settings.javaScriptEnabled = true

질문과 잘못된 점에 대해 말씀해주시는 건 언제나 환영입니다.
zero5.two4@gmail.com

반응형
Comments