Constants
- ERROR_AUTHENTICATION
- 사용자 authentication가 서버에서 실패했다.
- 사용자 authentication
- 사용자의 신원을 확인하고 검증하는 프로세스
- 비밀번호
- 지문, 얼굴 인식
- ERROR_BAD_URL
- Malformed URL
- URL이 형식에 맞지 않은 경우 발생하는 오류 메세지
- Malformed URL
- ERROR_CONNECT
- 서버에서 접근을 실패하였다.
- ERROR_FAILED_SSL_HANDSHAKE
- 일반적으로 클라이언트와 서버 간에 안전한 SSL/TLS 연결을 설정하는데 문제가 있는 경우에 발생
- SSL(보안소켓레이어)및 그 후속인 TLS(전송계층보안)은 인터넷을 통한 통신을 보호하기 위한 암호화 프로토콜입니다.
- 웹사이트의 URL이 https://로 시작하는 경우 해당 웹사이트는 SSL/TLS를 사용하여 보안 연결을 제공하고 있음
- 일반적으로 클라이언트와 서버 간에 안전한 SSL/TLS 연결을 설정하는데 문제가 있는 경우에 발생
- ERROR_HOST_LOOKUP
- 서버나 프록시의 호스트 이름을 찾는데 실패
- 프록시
- 컴퓨터 네트워크에서 중계 역할을 하는 서버나 소프트웨어
- 데이터 중계 : 데이터를 수집하고 다른 시스템 또는 위치로 전송하는 프로세스 또는 장치
- 기능
- 보안
- 실제 IP주소를 숨길 수 있다.
- 익명성 유지, 보안 강화
- 캐싱
- 프록시는 이전에 요청한 데이터를 저장하고, 동일한 요청이 다시 발생할 때 저장된 데이터를 반환함으로써 대역폭을 절약하고 웹페이지 로딩 속도를 높일 수 있다.
- 필터링
- 웹 사잍 또는 콘텐츠에 대한 엑세스를 제어하기 위해 프록스를 사용할 수 있다.
- 악성 콘텐츠에 대한 접근을 차단하거나 모니터링할 수 있다.
- 로드 밸런싱
- 여러 서버 사이에서 트래픽을 분산하는 로드 밸런서 역할을 하는 프록시도 있다.
- 접근 제어
- 프록시를 사용하여 특정 지리적 위치에서만 특정 서비스에 엑세스할 수 있도록 제한할 수 있습니다.
- 콘텐츠 필터링
- 악성 콘텐츠, 광고 블로킹 또는 웹 페이지 변형을 통한 콘텐츠 수정과 같은 작업을 수행하는 프록시도 있다.
- 보안
- 컴퓨터 네트워크에서 중계 역할을 하는 서버나 소프트웨어
- ERRO_IO
- 서버에서 읽거나 쓰는데 실패함
- ERROR_REDIRECT_LOOP
- 너무 많은 리다이렉트
- ERROR_UNSAFE_RESOURCE
- Safe Browsing에 의해서 리소스 로드가 취소됨
- SAFE_BROWSING_THREAT_BILLING
- 사용자를 속여 청구 계약을 체결할 수 있으므로 리소스가 차단되었습니다.
- 이 상수는 targetSdkVersion이 최소한 Build.VERSION_CODE.Q인 경우에만 사용됩니다. 그렇지 않으면 SAFE_BROWSING_THREAT_UNKNOWN이 대신 사용됩니다.
- SAFE_BROWSING_THREAT_MALWARE
- 리소스가 멀웨어를 포함하여 리소스가 차단되었다.
- 멀웨어 : 악성 소프트 웨어
- 리소스가 멀웨어를 포함하여 리소스가 차단되었다.
Public Method
public void doUpdateVisitedHistory (WebView view,
String url,
boolean isReload)
- 방문한 링크 데이터 베이스를 업데이트하도록 호스트 어플리케이션에 알립니다.
- 매개 변수
- view
- 콜백을 시작하는 WebView
- url
- 방문 중인 URL입니다.
- isReload
- true : URL이 다시 로드 되는 경우
- view
public void onFormResubmission (WebView view,
Message dontResend,
Message resend)
- 호스트 애플리케이션에게 웹 페이지에서 발생한 POST 요청에 대한 결과 페이지를 받은 경우, 사용자가 결과 페이지를 새로고침하거나 다른 페이지로 이동할 때 브라우저가 데이터를 다시 보낼지 여부를 결정하도록하는 메서드입니다.
- 기본동작은 데이터를 다시 보내지 않도록 설정되어있다.
- 새로 고침할 때 브라우저가 일반적으로 사용자에게 데이터를 다시 보낼 것인지를 화긴하는 확인 대화 상자를 표시합니다.
- 매개 변수
- dontResend
- 브라우저가 재전송하지 않아야 하는 경우 보낼 메세지 입니다.
- resend
- 브라우저가 데이터를 다시 보내야하는 경우 보낼 메시지 입니다.
- dontResend
public void onLoadResource (WebView view,
String url)
- WebView가 주어진 URL에 지정된 리소스르 로드할 것입을 호스트 어플리케이션에 알린다.
- 매개 변수
- url
- WebView가 로드할 리소스의 URL
- url
public void onPageFinished (WebView view,
String url)
- 호스트 애플리케이션에게 페이지 로딩이 완료되었음을 알리는 메서드입니다.
- 이 메서드는 main frame에 대해서만 호출된다.
- 이 메서드의 콜백을 받는다고 해서 webview에서 다음 프레임이 현재 DOM 상태를 반영한 것을 보장하지 않는다.
- DOM
- 웹페이지의 구조를 표현하는 계층적인 객체 모델
- 웹 페이지의 모든 요소와 그들의 속성 및 관계를 표현한다.
- 클라이언트 측 웹 기술(HTML,XML,JavaScript 등)을 사용하여 이를 조작할 수 있도록 합니다.
- DOM 상태란 DOM의 현재 상태 또는 구조를 가리킨다.
- DOM
- 현재 DOM 상태가 렌더링될 준비가 되었음을 WebView의 postVisualStateCallback 메서드를 사용하여 시각적 상태 콜백을 요청하고 제공된 콜백이 트리거 될때 까지 대기해야한다.
- 페이지에 동적으로 로드되는 자원이나 스크립트에 의해 DOM이 변경될 수 있으며, 이러한 변경이 다음 프레임에 반영될 때 까지 시간이 걸릴 수있다.
- 따라서 현재 DOM 상태가 렌더링 가능한 상태인지 확인하려면 postVisualStateCallback 메서드를 사용하여 제공된 콜백을 통해 시각적 상태가 준비되었을 때 알림을 받을 수 있다.
- 이를 통해 렌더링 되기 전에 현재 페이지의 실제 상태를 확인하고 필요한 작업을 수행할 수 있다.
public void onPageStarted (WebView view,
String url,
Bitmap favicon)
- 페이지 로드가 시작되었음을 호스트 애플리케이션에 알린다.
- 이 메소드는 각 메인 프레임 로드에 대해 한 번씩 호출되므로 iframe 또는 프레임셋이 있는 페이지는 메인 프레임에 대해 onPageStated를 한 번 호출합니다.
- 이는 또한 포함된 프레임의 내용이 변경될 때 onPageStated가 호출되지 않는다는 것을 의미
- 즉, 대상이 iframe인 링크를 클릭하면 프래그먼트 탐색(fragment id 탐색)에 대해서도 호출되지 않는다.
- 매개 변수
- view
- 콜백을 시작하는 WebView입니다.
- url
- 로드할 URL
- favicon
- 이 페이지가 데이터 페이스에 이미 존재하는경우 즐겨찾기 아이콘
- view
public void onReceivedError (WebView view,
int errorCode,
String description,
String failingUrl)
- API level 1에 추가 23에 삭제됨
- 호스트 어플리케이션에 오류를 보고한다.
- 오류는 복구할 수 없다. 즉 기본 리소스를 사용할 수 없다.
- 매개 변수
- errorCode
- ERROR_* 값에 해당하는 오류 코드
- description
- 오류를 설명하는 문자열
- failedUrl
- 로드에 실패한 URL
- errorCode
public void onReceivedError (WebView view,
WebResourceRequest request,
WebResourceError error)
- API level 23에 추가됨
- 웹 리소스 로딩 오류를 호스트 애플리케이션에 보고 한다.
- 이러한 오류는 일반적으로 서버에 연결할 수 없음을 나타낸다.
- 더 이상 사용되지 않는 콜백 버전과 달리 새 버전은 기본 페이지뿐만 아니라 모든 리소스(iframe, 이미지 등)에 대해 호출된다.
- 따라서 이 콜백에서는 최소한 필수 작업을 수행하는 것이 좋다.
- 매개 변수
- request
- 원래 요청
- error
- 오류에 대한 정보
- request
public void onReceivedHttpAuthRequest (WebView view,
HttpAuthHandler handler,
String host,
String realm)
- WebView가 HTTP authentication 요청을 수신했음을 호스트 애플리케이션에 알린다.
- 호스트 애플리케이션은 제공된 HttpAuthHandler를 사용하여 요청에 대한 WebView의 응답을 설정할 수 있습니다.
- 기본 동작은 요청을 취소하는 것입니다.
- HttpAuthHandler는 UI스레드에서 사용해야합니다.
- 매개 변수
- host
- 인증이 필요한 호스트
- realm
- 인증이 필요한 영역
- host
public void onReceivedLoginRequest (WebView view,
String realm,
String account,
String args)
- 사용자 자동 로그인 요청이 처리 되었음을 호스트 어플리케이션에 알립니다.
- 매개 변수
- realm
- 계정을 조회하는데 사용되는 계정영역
- account
- 선택적 계정입니다.
- null이 아닌 경우 해당 계정을 장치의 계정과 비교하여 확인해야합니다.
- 유효한 계정이라면 사용자 로그인에 사용해야 합니다.
- args
- 사용자 로그인에 사용되는 인증자별 인수입니다.
- realm
public void onReceivedSslError (WebView view,
SslErrorHandler handler,
SslError error)
- 리소스를 로드하는 동안 SSL 오류가 발생했음을 호스트 애플리케이션에 알립니다.
- 호스트 응용 프로그램은 SslErrorHandler#cancel() 또는 SslErrorHandler#proceed()를 호출해야 합니다.
- 이 메서드의 재정의를 사용하여 사용자 정의 오류 페이지를 표시하거나 문제를 자동으로 기록할 수 있지만 호스트 애플리케이션은 항상 SslErrorHandler#cancel()을 호출하고 오류를 표시한 후에 웹 페이지로의 계속된 접근을 금지해야한다.
- SSL 오류에 대해 사용자에게 메세지를 표시하지 마세요. 사용자는 결정을 내릴 수 없으며 WebView는 의미 있는 방식으로 오류 세부 정보를 표시하는 UI를 제공하지 않는다.
- proceed() 또는 cancel() 호출 결정은 향후 SSL 오류에 대한 응압을 용이하게 하기위해 유지 될 수 있다.
- 기본 동작은 리소스 로드 프로세스를 cancel라는 것입니다.
- 이 API는 복구가능한 SSL 인증서 오류가 있는 경우에만 호출된다.
- 복구할 수 없는 오류(서버가 클라이언트에 실패한 경우)의 경우 WebView는 ERROR_FAILEDSSL_HANDSHAKE 인수를 사용하여 onReceivedError(WebView, WebResourceRequest, WebResourceError)를 호출한다.
public void onScaleChanged (WebView view,
float oldScale,
float newScale)
- WebView에 적용된 배율이 변경되었음을 호스트 애플리케이션에 알립니다.
public void onUnhandledKeyEvent (WebView view,
KeyEvent event)
- WebView에서 처리되지 않은 특정 키 이벤트가 발생했을 때 호출되는 콜백 메서드이다.
- 이 메서드를 사용하여 WebView 내에서 처리되지 않은 특정 키 이벤트를 감지하고 해당 이벤트를 처리할 수 있습니다.
- 매개 변수
- event
- 처리되지 않은 키 이벤트를 나타내는 KeyEvent 객체
- event
public WebResourceResponse shouldInterceptRequest (WebView view,
WebResourceRequest request)
- WebView에서 웹 리소스 요청을 가로채고 수정하거나 대체한 다음 커스텀한 응답을 제공하는데 사용되는 콜백메서드입니다.
- 작동 방식 및 주요 내용
- 호스트 애플리케이션 알림
- 이 메서드를 사용하여 WebView가 웹 리소스를 요청할 때 호스트 애플리케이션에 알린다.
- 이것은 WebView에서 발생한 리소스 요청을 애플리케이션에서 처리하고자 할 때 사용된다.
- 데이터 반환
- 애플리케이션은 이 메서드를 통해 리소스 데이터를 반환 할 수 있다.
- 반환 값으로 WebResourceResponse 객체를 사용하며, 이 객체는 응답정보와 데이터를 포함한다.
- 애플리케이션이 데이터를 반환하는 경우 WebView는 해당데이터를 사용하여 리소스를 로드하게 된다.
- null 반환
- 애플리케이션이 null을 반환하는 경우, WebView는 리소스를 일반적인 방식대로 로드하게된다.
- 즉, 아무런 수정없이 리소스를 웹에서 가져온다.
- 다양한 URL Scheme
- 이 메서드는 http(s):, data:, file: 등 다양한 URL 스키마에 대한 리소스 요청에 대해 호출됩니다.
- 네트워크를 통해 요청을 보내는 스키마 뿐만 아니라 로컬 파일, 데이터 URL등 다양한 경우에 적용된다.
- 특정 URL 제외
- 이 메서드는 javascript: URL, blob: URL, file:///android_asset/ 또는 file:///android_res/에 대해서는 호출되지 않습니다.
- 리다이렉트
- 리다이렉트의 경우 이 메서드는 초기 리소스 URL에 대해서만 호출되며, 후속 리다이렉트 URL에 대해서는 호출되지 않습니다.
- 쓰레드 주의
- 이 메서드는 UI 쓰레드가 아닌 다른 쓰레드에서 호출됩니다.
- 따라서 애플리케이션에서 개인 데이터나 뷰 시스템에 접근할 때 주의해야합니다.
- Safe Browsing 체크
- Safe Browsing이 활성화 된 경우 이 메서드에서 반환된 URL은 여전히 Safe Browsing 검사를 거칩니다.
- 이를 피하려면 WebView#setSageBrowsingWhitelist를 사용하여 해당 호스트의 SageBrowsing 검사를 건너 뛸 수 있습니다.
- 호스트 애플리케이션 알림
public boolean shouldOverrideKeyEvent (WebView view,
KeyEvent event)
- 호스트 애플리케이션 에게 key event를 동기식으로 처리할 수 있는 기회를 제공합니다.
- 이 메서드를 사용하면 특정 키 이벤트를 WebView가 아니라 애플리케이션에서 처리할 수 있습니다.
- 이를 통해 메뉴 단축키와 같은 이벤트를 필터링하고 처리할 수 있습니다.
- true를 반환하면 호스트 애플리케이션이 키 이벤트를 직접 처리하고 WebView는 해당 키 이벤트를 처리하지 않습니다.
- false를 반환하면 WebView가 키 이벤트를 처리하며, 이 경우 슈퍼 뷰 체인에서는 해당 이벤트를 볼수 없다.
- 기본 동작은 false
- 매개 변수
- event
- 처리할 키 이벤트
- event
public boolean shouldOverrideUrlLoading (WebView view,
WebResourceRequest request)
- 이 메서드는 WebView에서 현재 WebView에 로드될 예정인 URL을 호스트 애플리케이션에 제어 권한을 부여하는 콜백 메서드
- 이 메서드를 사용하여 URL이 로드되기 전에 애플리케이션에서 제어할 수 있습니다.
- WebViewClient가 제공되지 않은 경우, 기본적으로 WebView는 URL에 대한 적절한 핸들러를 선택하기 위해 Activity Manager에 요청합니다.
- WebViewClient가 제공된 경우 true를 반환하면 현재 WebView URL로딩을 중단하며 false를 반환하면 WebView는 URL 로딩을 계속 진행합니다.
- WebView#loadUrl(String)을 사용하여 요청의 URL을 로드하고 true를 반환하지 마십시오.
- 현재 로드를 무효화하고 동일한 URL로 새로운 로드를 시작하므로 불필요한 작업입니다.
- 특정 URL을 계속 반환하려면 간단히 false를 반환하면 됩니다.
- 이 메서드는 POST 요청에 대해서는 호출되지 않습니다.
- 이 메서드는 HTTP(s) 스키마가 아닌 서브프레임 및 다른 스키마에 대해서도 호출될 수 있습니다.
- 그러나 이 메서드에서 WebView#loadUrl(String)을 호출하는 경우 해당 URL이 올바르게 처리되지 않을 수 있습니다.
- 이 메서드를 사용하면 웹페이지 내에서 특정링크를 클릭하거나 URL을 로드할 때 호스트 애플리케이션이 제어할 수 있으므로 웹 페이지의 네비게이션 동작을 커스터마이즈하고 보안을 강화할 수 있습니다.
'android' 카테고리의 다른 글
8. Android WebView 공식문서 공부 (0) | 2023.11.04 |
---|---|
6. WebSettings 안드로이드 공식문서 공부 (0) | 2023.09.23 |
5. 안드로이드 Application 공식문서 공부 (0) | 2023.09.19 |
3. (android) WebView, WebChromeClient 공식문서 공부 (0) | 2023.09.16 |
Activity 공식 문서 공부 (0) | 2023.08.30 |