챗지피티와 구글 번역기를 사용해서 공부한 내용입니다. 틀린 내용이 있다면 댓글 달아주세요.
public static interface WebView.FindListener
public abstract void onFindResultReceived (int activeMatchOrdinal,
int numberOfMatches,
boolean isDoneCounting)
- onFindResultReceived메서드는 웹 페이지 내에서 텍스트를 검색하고 검색 결과를 처리하는 데 사용되는 콜백 메서드입니다.
- 사용자는 웹 페이지 내에서 텍스트를 검색하기 위해 검색 키워드를 제공하며
- onFindResultReceived 메서드는 검색 결과를 제공합니다.
- 검색 결과를 수신하고 결과를 처리하는 데 사용한다.
- 매개 변수
- activeMatchOrdinal
- 현재 활성 검색 결과의 순서를 나타낸다.
- 사용자가 검색 결과를 차례로 탐색할 때 어떤 결과가 활성인지를 나타내며 0부터 증가한다.
- 예를 들어 "Android"라는 검색어로 웹 페이지에서 검색을 수행했고, 그 결과로 5개의 검색결과가 나왔다
- 처음에는 activeMatchOrdinal 값이 0이다. 이것은 첫번째 검색결과를 가르킨다.
- 사용자가 다음 검색 결과로 이동하면 activeMatchOrdinal이 1 증가한다.
- 다음 결과로 이동할 때 마다 activeMatchOrdinal이 증가한다.
- numberOfMathches
- 현재까지 찾은 검색 결과의 총 수를 나타냅니다.
- 이 매개변수는 사용자에게 검색 결과가 몇개인지를 알려주는데 사용됩니다.
- isDoneCounting
- 검색 결과가 모두 계산 및 세어진 경우 true이며, 검색 작업이 완료된 것을 나타냄
- activeMatchOrdinal
WebView webView = findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
// WebView에 FindListener 등록
webView.setFindListener(new WebView.FindListener() {
@Override
public void onFindResultReceived(int activeMatchOrdinal, int numberOfMatches, boolean isDoneCounting) {
if (isDoneCounting) {
if (numberOfMatches > 0) {
// 텍스트를 찾았을 때의 처리
// activeMatchOrdinal 및 numberOfMatches를 사용하여 결과 처리 가능
} else {
// 텍스트를 찾지 못했을 때의 처리
}
}
}
});
// 특정 텍스트를 찾을 대상으로 설정
String searchText = "Android"; // 찾을 텍스트
webView.findAllAsync(searchText);
findAllAsync
public void findAllAsync (String find)
- 지정된 텍스트를 웹 페이지에서 찾아서 하이라이트로 표시하는 역할을 합니다.
- 이 메서드를 호출하면 해당 텍스트를 찾는 작업이 비동기적으로 수행되며, 찾은 결과에 대한 처리는 FindListener를 통해 이루어집니다.
findNext()
public void findNext(boolean forward)
- findAllAsync() 메서드를 사용하여 찾은 텍스트 중에서 다음 일치 항목을 하이라이트로 표시하고 페이지를 스크롤합니다.
- 필요한 경우 페이지 경계를 넘어서 다음 일치 항목을 찾습니다.
- 이 메서드는 FindListener를 토해 결과를 알립니다.
- 메서드 설명
- boolean forward: true로 설정하면 다음 일치 항목을 검색하고 false로 설정하면 이전 일치 항목을 검색합니다.
- 메서드 동작
- findNext메서드는 findAllAsync(String) 메서드를 사용하여 찾은 텍스트 중에서 다음 또는 이전 일치 항목을 찾고 해당 항목을 하이라이트로 표시하며 페이지를 스크롤 합니다.
- forward가 true로 설정된 경우, 다음 일치 항목을 찾습니다.
- forward가 false로 설정된 경우, 이전 일치 항목을 찾습니다.
- 페이지 내에서 검색을 계속하며 페이지 끝에 도달하면 필요한 경우 페이지를 넘어서 검색을 계속합니다. 이로써 페이지 경계를 넘어서 검색을 수행할 수 있습니다.
- 결과를 findListener를 통해 알립니다. FindListener를 통해 현재의 일치 항목 및 전체 일치 항목 수 등의 정보를 알 수 있습니다.
WebView.HitTestResult
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// 사용자가 링크를 클릭했을 때, 해당 링크의 정보를 가져와서 처리
WebView.HitTestResult result = view.getHitTestResult();
if (result.getType() == WebView.HitTestResult.SRC_ANCHOR_TYPE) {
// 사용자가 링크를 클릭한 경우
String linkUrl = result.getExtra();
// 이제 linkUrl을 사용하여 원하는 작업 수행 가능
// 예: 해당 URL을 다른 액티비티에서 열기
}
return false;
}
});
// 웹 페이지 로드
webView.loadUrl("https://www.example.com");
}
}
- 사용자가 WebView내에서 터치한 지점의 유형을 결정하는데 사용된다.
- Constants
- int EDIT_TEXT_TYPE : 에디트 텍스트를 터치 했다.
- int EMAIL_TYPE : 이메일 주소부분을 터치했다.
- GEO_TYPE : 지도 주소
- IMAGE_TYPE : HTML::img tag
- PHONE_TYPE : 핸드폰 번호
- SRC_ANCHOR_TYPE : src=http가 있는 HTML::a 태그
- SRC_IMAGE_ANCHOR_TYPE : src=http + HTML::img가 있는 HTML::a 태그
- UNKNOWN_TYPE : Default값 타겟이 어디있는지 모르겠다.
- Method
- String getExtra() : 정보를 가져온다.
- int getType() : Type을 가져온다.
- 위의 코드 처럼 사용자가 클릭한 링크를 가져올수도있다.
getHitTestResult
public WebView.HitTestResult getHitTestResult ()
WebView.VisualStateCallback
// VisualStateCallback를 사용하여 WebView의 시각적 상태 모니터링
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.postVisualStateCallback(0, new VisualStateCallback() {
@Override
public void onComplete(long timeMs) {
// WebView의 시각적 상태 완료 시 동작을 수행
// 예: 로딩 프로그레스 숨기기
}
});
}
- webview가 완료되었는지 확인가능
- WebViwClient의 onPageFinished()보다 나은 점
- onPageFinished()는 웹페이지의 로딩이 완료될 때 호출되지만, 페이지의 모든 리소스(이미지, 스크립트, 스타일 등)의 로딩이 완료되는 것을 보장하지 않는다.
- VisualStateCallback은 웹 페이지의 시각적 상태가 완전히 완료될때 까지 대기한다.
- 페이지가 시각적으로 준비된 후에 작업을 수행할 수 있다.
WebView.WebViewTransport
- 다른 WebView로 WebView 인스턴스를 전달하거나 이동시킬 때 사용된다.
- WebView를 다른 View 계층으로 이동하거나 전달할 때 유용하다.
- Method
- setWebView(Webview webview)
- WebView를 WebViewTransport에 설정한다.
- 이렇게 설정된 WebView는 다른 곳으로 전달되거나 이동된다.
- setWebView(Webview webview)
webview.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onCreateWindow(final WebView view, boolean dialog,
boolean userGesture, Message resultMsg)
{
WebView newWebView = new WebView(MainActivity.this);
WebView.WebViewTransport transport
= (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(newWebView);
resultMsg.sendToTarget();
newWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW);
browserIntent.setData(Uri.parse(url));
startActivity(browserIntent);
return true;
}
});
return true;
}
});
autofill()
public void autofill (SparseArray<AutofillValue> values)
- 예를 들어 사용자가 이름, 이메일 주소등을 입력하는 양식이 있다면 autofill메서드를 사용하여 사용자가 이러한 정보를 입력할 때 Autofill Framework가 해당 정보를 저장하고 나중에 다시 자동으로 입력하는데 사용됩니다.
- values
- SparseArray는 key-value쌍을 보유하는 자료구조로, Android에서 자주 사용됩니다.
- 이 경우 SparseArray의 키는 사용자가 인터페이스 요소의 ID나 인덱스를 나타내며 값은 해당 요소에 대한 자동완성 값을 나타냅니다.
clearCache
public void clearCache (boolean includeDiskFiles)
- 캐쉬를 없앤다.
- 이 메소드를 사용하면 앱에서 사용하는 모든 앱의 cache가 없어진다.
clearClientCertPreferences
public static void clearClientCertPreferences (Runnable onCleared)
- 클라이언트 인증서 요청 진행/취소에 대한 응답으로 저장된 클라이언트 인증서 기본 설정을 지운다.
- 시스템 키체인이 업데이트 되면 WebView는 이러한 기본 설정을 자동으로 지운다.
- 기본 설정은 웹뷰앱에서 생성된 모든 WebView에서 공유된다.
clearFormData
public void clearFormData ()
- 자동완성 팝업을 없앤다.
- 저장된 데이터를 없애는게 아니다.
clearHistory
public void clearHistory ()
- back/forward list를 지운다.
clearSslPreferences
public void clearSslPreferences ()
- SSL 인즈어 오류 진행에 대한 응답으로 저장된 SSL 기본 설정 테이블을 지웁니다.
computeScroll
public void computeScroll ()
- 필요한 경우 자식이 mScrollX 및 mScrollY 값을 업데이트 하도록 요청하기 위해 부모에 의해 호출 됩니다.
- 이는 일반적으로 자식이 Scroller 개체를 사용하여 스크롤에 애니메이션을 적용하는 경우 수행됩니다.
createPrintDocumentAdapter
public PrintDocumentAdapter createPrintDocumentAdapter (String documentName)
- createPrintDocumentAdapter는 PrintDocumentAdapter 객체를 생성한다.
- 이 메서드는 Android print 프레임워크의 일부로 print를 지원하는 앱에서 컨텐츠를 print하고 관리하는데 사용됩니다.
- print는 실제 프린트기로 프린트하는 것을 말합니다.
- 어댑터는 WebView 콘텐츠를 PDF 스트림으로 변환하여 작동합니다.
- 변환 중에는 WebView를 그릴수 없다.
- 인쇄에는 전용 오프 스크린 WebView를 사용하는 것이 좋다.
- 필요한 경우 애플리케이션은 반환된 객체를 감싸는 사용자 정의 PrintDocumentAdapter인스턴스를 사용하고 onStart 및 onFinish 메서드를 관찰하여 표시되는 WebView를 일시적으로 숨길 수 있습니다.
createWebMessageChannel
public WebMessagePort[] createWebMessageChannel ()
- JS와 통신하기 위한 메시지 채널을 생성하고 이 메세지 채널의 끝점을 나타내는 메시지 포트를 반환합니다.
// WebView 설정
WebView webView = findViewById(R.id.webView);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
// Web Message Channel 생성
WebMessagePort[] channel = webView.createWebMessageChannel();
// 메인 스레드에서 메시지 전송
WebMessagePort mainPort = channel[0];
mainPort.postMessage(WebMessage.create("Message from main thread"));
// Web Worker에서 메시지 수신
WebMessagePort workerPort = channel[1];
workerPort.setOnmessage(new WebMessagePort.OnmessageListener() {
@Override
public void onMessage(WebMessage message) {
// Web Worker에서 메시지를 수신하고 처리
String messageData = message.getData().toString();
Log.d("WebWorker", "Received message from main thread: " + messageData);
}
});
// 웹 페이지 로드
webView.loadUrl("https://www.example.com");
- createWebMessageChannel 메서드를 사용하여 Web Message Channel을 생성합니다.
- 이 채널에는 두 개의 WebMessagePort가 포함되며, 하나는 메인쓰레드를 나타내고 다른 하나는 WebWorker를 나타냅니다.
- 메인 스레드에서 메시지를 생성하고 메시지를 mainPort를 통해 WebWorker로 전송합니다.
- Web Worker는 workerPort를 통해 메시지를 수신하고 이를 처리합니다.
- 이러한 기능은 복잡한 웹 앱엥서 백그라운드 작업을 수행하고 결과를 메인 스레드로 전달할 때 유용합니다.
destroy
public void destroy ()
- 이 WebView의 내부 상태를 삭제한다.
- 이 메서드는 이 WebView가 뷰 시스템에서 제거된 후에 호출되어야한다.
- 삭제된 후에는 이 WebView에서 다른 메서드를 호출할 수 없습니다.
disableWebView
public static void disableWebView ()
- 현재 프로세스는 WebView를 사용할 의도가 없으며 WebView가 생성되거나 android.webkit 패키지의 다른 메서드가 사용되는 경우 예외가 발생해야함을 나타냅니다.
- 여러 프로세스가 있는 어플리케이션은 WebView가 필요하지 않은 수명이 긴 프로세스에서 WebView를 초기화하는데 실수로 메모리 사용량이 발생하는 것을 방지하고 잠재적인 데이터 디렉터리 충돌을 방지하기 위해 WebView를 사용하지 않는 프로세스에서 이를 호출할 수 있습니다.
- 예를 들어 액티비티를 위한 하나의 프로세스와 재생 서비스를 위한 또 다른 프로세스가 있는 오디오 플레이어 애플리케이션은 재생서비스의 Service.onCreate()에서 메서드를 호출할 수 있습니다.
dispatchKeyEvent
public boolean dispatchKeyEvent (KeyEvent event)
- 키 이벤트를 현재 포커스경로에 따라 다음 뷰로 전달하는 역할을 한다.
- 이 메서드는 키 이벤트를 현재 포커스된 뷰에서 시작하여 뷰 계층 구조를 따라 내려가면서 이벤트를 전달한다.
- 이 메서드는 또한 뷰에 등록된 키 이벤트 리스너를 호출한다.
- 메서드 동작
- 현재 뷰가 포커스를 가지고 있으면, 이 메서드는 해당 뷰로 키 이벤트를 전달합니다.
- 이때, 뷰에 등록된 키 이벤트 리스너가 호출될 수 있습니다.
- 현재 뷰가 포커스를 가지고 있지 않으면, 이 메서드는 현재뷰의 부모 또는 상위 뷰로 키 이벤트를 전달합니다. 이를 통해 포커스 경로를 따라 다음뷰로 이벤트가 전달됩니다.
- 포커스 경로를 따라 이벤트가 전달되면, 각 뷰에서 이벤트가 처리되거나 무시될수 있습니다. 처리 방식은 뷰의 속성및 등록된 리스너에 따라 다를 수 있습니다.
documentHasImages
public void documentHasImages (Message response)
- 웹 문서가 이미지를 포함하는지 여부를 확인하기 위한 메서드 입니다.
- 메서드 동작
- documentHasImages 메서드가 호출되면 WebView는 현재 로드된 웹 페이지나 문서를 분석하여 이미지 참조 여부를 확인합니다.
- 이미지를 참조하는 경우, Messgae 객체의 arg1 속성이 1로 설정됨 참조하지 않으면 0으로 설정된다.
enableSlowWholeDocumentDraw()
public static void enableSlowWholeDocumentDraw ()
- Android 5.0을 타겟팅하는 앱에서 WebView는 HTML 문서의 일부를 그리는 메모리 사용량을 줄이고 성능을 향상시키는 새로운 기본 동작을 가집니다.
- 이러한 최적화는 대부분의 경우에는 개발에게는 투명하며, WebView는 자동으로 필요한 부분만 그립니다.
- 그러나 특정 상황에서 개발자는 이러한 최적화를 비활성화 하고 전체 HTML 문서를 그리도록 설정하려고 할 수 있습니다.
- enableSlowWholeDocumentDraw 메서드를 호출하면 WebView가 전체 HTML 문서를 그리도록 설정된다.
- 사용 사례
- onDraw(Canvas)를 사용하여 자체 그리기를 수행하고 페이지의 가시 영역을 크게 벗어나는 페이지 일부에 엑세스해야하는 경우
evaluateJavascript()
public void evaluateJavascript(String script, ValueCallback<String> resultCallback)
- evaluateJavaScript()메서드는 안드로이드 WebView 클래스에서 사용되는 메서드로, 현재 표시된 웹 페이지의 컨텍스트에서 JavaScript코드를 비동기적으로 실행합니다.
- JavaScript 코드의 실행 결과가 있다면, 지정된 resultCallback 콜백을 통해 결과를 반환합니다.
- 이 메서드는 반드시 UI 쓰레드에서 호출되어야한다. 또한 결과 콜백도 UI 쓰레드에서 호출된다.
- Android 7.0이상을 타겟팅 하는 앱의 경우, 빈 WebView에서의 JavaScript tkdxork loadUrl 메서드를 통한 페이지 전환 간에 더이상 유지되지 않는다.
- 즉, loadUrl() 메서드를 사용하여 페이지를 로드하기 전에 정의한 전역 변수 및 함수는 로드된 페이지에서 존재하지 않는다.
- 이러한 경우에는 addJavaScriptInterface 메서드를 사용하여 javaScript 객체를 페이지 전환 간에 유지할 수 있다.
findFocus
public View findFocus ()
- 현재 포커스를 가지고 있는 뷰를 찾기 위해 뷰 계층 구조에서 탐색하는데 사용된다.
- 메서드 동작
- 이 메서드는 현재 화면에 표시되는 뷰 계층 구조(root view에서 시작)를 탐색하여 포커스를 가지고 있는 뷰를 찾습니다.
- 포커스를 가지고 있는 뷰를 찾으면 그 뷰를 반환합니다. 만약 현재 화면에 포커스를 가지고 있는 뷰가 없다면 null을 반환합니다.
- 이 메서드를 호출하면 현재 화면에서 어떤 뷰가 포커스를 가지고 있는지 확인 할 수 있습니다.
- 이는 사용자 인터페이스상의 포커스 이동과 관련된 작업을 수행하는데 유용하며, 현재 포커스를 가지고 있는 뷰에 대한 조작을 수행하고자 할 때 유용하게 활용됩니다.
getAccessibilityClassName
public CharSequence getAccessibilityClassName ()
- 객체의 클래스 이름을 반환하는 역할을 합니다.
- 이 메서드를 오버라이드하여 객체가 접근성 기능을 위해 새로운 뷰 클래스로 처리되어야 하는 경우 사용됩니다.
- 접근성(Accessibility)은 장애가 있는 개인이 다양한 환경에서 정보와 기능에 쉽게 접근할 수 있도록 디자인된 컴퓨터 시스템을 가리키는 용어입니다.
- 접근성은 장애를 가진 사용자, 노인, 저시력자, 청각 장애자 및 기타 다양한 그룹에게 정보 및 서비스를 더 효과적으로 제공하기위해 중요한 개념
- Button 클래스에서 상속받은 경우, getAccessibilityClassName() 메서드를 오버라이드 하지 않으면 상위 클래스인 Button의 기본 동작을 따르게 된다.
- 일반적으로 안드로이드의 뷰 클래스는 자체적인 클래스 이름을 가지고 있고, 이 클래스 이름은 기본적으로 뷰의 클래스 명과 관련이 있다.
- 그러나 경우에 따라 특정 뷰가 접근성 기능을 위해 다른 클래스로 처리되어야 할 때 이 메서드를 오버라이드하여 새로운 클래스 이름을 반환할 수 있다.
- 접근성 기능을 사용하는 사용자에게 특정 뷰가 새로운 뷰 클래스로 인식되어야하는 상황에서 이 메서드를 오버라이드하여 원하는 클래스 이름을 반환하면, 접근성 서비스는 해당 뷰를 새로운 클래스의 뷰로 처리합니다.
- 예를 들어 특정 커스텀 뷰가 접근성 기능을 사용하는 사용자에게 기본 뷰 클래스와 다르게 보여야하는 경우, getAccessibilityClassName을 오버라이드하여 해당 뷰를 새로운 클래스로 처리하도록 할 수 있습니다.
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.Button;
public class CustomAccessibilityButton extends Button {
public CustomAccessibilityButton(Context context) {
super(context);
}
public CustomAccessibilityButton(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public CharSequence getAccessibilityClassName() {
// 이 메서드를 오버라이드하여 커스텀 클래스 이름을 반환
return "CustomAccessibilityButton";
}
// 다른 뷰와 관련된 로직 및 메서드
// 이하 생략
}
- CustomAccessibility 클래스의 경우 만약 getAccessibilityClassName 메서드를 오버라이드 하지 않으면 접근성 기능을 사용하는 사용자에게 이 버튼은 CustomAccessibilityButton 클래스로 인식되지 않고 기본 Button 클래스로 인식 될 것 입니다.
getAccessibilityNodeProvider()
public AccessibilityNodeProvider getAccessibilityNodeProvider ()
- 이 메서드는 Android 뷰 객체에 대한 접근성 노드 프로바이더를 반환하는 메서드입니다.
- 이 메서드는 접근성 서비스가 화면 콘텐츠를 탐색하고 이해하는데 도움이 되는 가상 뷰 트리를 관리하는 데 사용된다.
- 만약 이 메서드가 어떤 객체를 반환한다면, 해당 객체는 다음과 같은 역할을 담당한다.
- 이 뷰를 루트로 하는 가상 뷰 트리를 관리한다. 이 트리는 실제화면에 표시되는 뷰와 별개로, 접근성 서비스를 통해 접근성 정보를 제공한다.
- 이 가상 뷰트리에 속한 노드들의 접근성 정보를 관리하고 반환한다. 이정보는 사용자가 앱 내에서 뷰와 상호작용할 때 필요합니다.
- 가상 뷰 또는 루트 뷰에 대한 접근성 동작을 수행합니다. 사용자가 화면 읽기, 터치 제스처 등의 동작을 요청할 때 이 객체를 통해 처리됩니다.
- 뷰에서 getAccessibilityNodeProvider()를 구현하여 접근성 정보를 사용자 정의하고 확장할 수 있습니다.
getCertificate
public SslCertificate getCertificate ()
- 주 최상위 페이지에 대한 SSL 인증서를 가져오거나 인증서가 없는 경우 null(사이트가 안전하지 않음)을 가져온다.
getContentHeight
public int getContentHeight ()
- HTML 콘텐츠에 height를 가져온다.
getCurrentWebViewPackage
public static PackageInfo getCurrentWebViewPackage ()
- 이 메서드는 현재 프로세스에서 WebView가 로드되어 있는 경우 해당 WebView를 로드한 패키지를 반환하고
- WebView가 현재 프로세스에 로드되지 않은 경우 로드된다면 어떤 패키지가 사용될 것인지를 반환합니다.
- 이 메서드를 호출하는 것으로 WebView를 로드하거나 변경하지는 않습니다. 따라서 이 정보는 언제든지 오래된 정보가 될 수 있습니다.
- WebView 패키지는 다음과 같은 경우에 변경될 수 있다.
- 현재 WebView 패키지가 업데이트되는 경우
- WebView 패키지가 비활성화되거나 제거되는 경우
- 개발자 설정을 통해 WebView 패키지가 변경되는 경우
- WebView 패키지가 변경되면 WebView를 로드한 앱 프로세스가 종료됩니다. 앱이 다시 시작되고 WebView를 로드하는 경우, 새로운 WebView 패키지가 사용된다.
getFavicon
public Bitmap getFavicon ()
- 이 메서드는 WebView에서 현재 페이지의 파비콘 이미지를 가져오는 데 사용된다.
- 파비콘은 웹페이지의 아이콘으로 주로 웹브라우저 탭에서 페이지를 식별하는 데 사용됩니다.
- 이 메서드를 호출하면 현재 페이지의 파비콘 이미지를 반환합니다.
- 단, 이 메서드는 현재 페이지의 파비콘 이미지를 반환하며, WebViewClient.onReceivedIcon 메서드가 호출되기 전까지의 파비콘을 제공합니다. 즉, WebViewClient.onReceivedIcon에서 새로운 파비콘 이미지를 수신할 때 까지 이전 파비콘을 반환합니다.
getHandler
public Handler getHandler ()
- 이 메서드는 Android에서 View의 UI 스레드와 관련된 Handler 객체를 반환합니다.
- Handler는 스레드 간 통신 및 작업 스케줄링에 사용되는 클래스로, UI스레드에서 실행되는 작업을 지연시키거나 다른 스레드로 메시지를 보낼 때 유용합니다.
- getHandler를 사용하여 View의 UI스레드에 연결된 Handler를 얻을 수 있다.
- 이 Handler를 사용하여 UI스레드에서 실행되는 작업을 스케줄링 하거나 다른 스레드에서 UI 스레드로 메시지를 보낼 수 있다.
getOriginalUrl
public String getOriginalUrl ()
- 현재 페이지에 대한 원래 URL을 반환한다.
- 이 원래 URL은 항상 WebViewClient.onPageStarted에 전달된 URL과 동일한 것은 아닙니다.
- 웹뷰가 리디렉션 되었을 때는 리디렉션 되기 전에 url을 반환한다.
getProgress
public int getProgress ()
- 현재 페이지의 로딩 진행 상태를 백분율로 반환한다.
getRenderedPriorityWaiveWhenNotVisible
public boolean getRendererPriorityWaivedWhenNotVisible ()
- 이 메서드는 WebView가 화면에 표시 되지 않을때 RENDERER_PRIORITY_WAIVED 우선 순위를 요청하는지 여부를 반환합니다.
- RENDERER_PRIORITY_WAIVED는 WebView에서 사용되는 렌더링 우선 순위 레벨중 하나이다. 이 레벨은 렌더링 우선 순위 중에서 낮은 우선 순위를 나타낸다.
- 따라서 WebView가 화면에 표시되지 않을 때 RENDERER_PRIORITY_WAIVED 우선 순위를 요청하는 경우 시스템은 렌더링 작업을 상대적으로 덜 중요하게 처리합니다.
- 만약 WebView가 화면에 표시되지 않는 경우에도 렌더링 우선 순위를 요청하고 싶다면 이 메서드가 true를 반환하게 설정할 수 있습니다.
getRendererRequestedPriority
public int getRendererRequestedPriority ()
- 이 메서드는 WebView가 요청한 렌더러(렌더링 엔진) 우선 순위를 반환합니다. 이 메서드는 WebView가 현재 어떤 우선 순위를 요청하고 있는지 확인하는데 사용됩니다.
- 이 메서드는 이러한 우선 순위중 하나를 반환합니다.
- 앱에서 이 값을 확인하여 WebView가 요청하는 우선순위를 이해하고 필요한 조치를 취할 수 있습니다.
- 이를 통해 렌더링 우선 순위를 조절하고 성능 및 리소스 관리를 최적화 할 수 있습니다.
- WebView가 요청할 수 있는 렌더러 우선 순위
- RENDERER_PRIORITY_WAIVED
- WebView가 화면에 표시되지 않을 때 요청하는 우선 순위입니다.
- 이 경우 WebView의 렌더링 작업은 다른 중요한 작업에 비해 덜 중요하게 처리될 수 있습니다.
- RENDERER_PRIORITY_BOUND
- WebView가 현재 화면에 표시되는 경우 요청하는 우선 순위입니다.
- 화면에 보이는 WebView의 렌더링은 다른 화면 요소에 비해 더 중요하게 처리됩니다.
- RENDERER_PRIORITY_IMPORTANT
- WebView가 중요한 컨텐츠를 렌더링할 때 요청하는 우선 순위입니다.
- 이 경우 WebView의 렌더링 작업이 매우 중요하게 처리됩니다.
- RENDERER_PRIORITY_WAIVED
getSafeBrowsingPrivacyPolicyUrl
public static Uri getSafeBrowsingPrivacyPolicyUrl ()
- 이 메서드는 safe Browsing 보고에 대한 개인 정보 보호 정책(privacy policy) 문서의 URL을 반환합니다.
- Safe Browsing
- 사용자를 악성 웹사이트나 위험한 웹 콘텐츠로 부터 보호하기 위한 구글 서비스 중 하나이다.
- 이 서비스를 사용하면 WebView는 웹 사이트를 방문할 때 해당 사이트가 악성 코드를 포함하거나 사용자를 공격하는 위험한 콘텐츠를 제공하는지 확인한다.
- 사용자가 이러한 위험에 노출된 경우, WebView는 사용자를 경고하거나 차단할 수 있으며, 필요한경우 Safe Browsing 서비스에 문제를 보고 합니다.
- 앱이 Safe Browsing을 사용하는 경우, 사용자에게 보고된 위험 사항 및 개인 정보 보호 정책에 대한 정보를 제공해야합니다.
- 이 메서드는 앱에서 이러한 정보를 표시하기 위해 사용할 수 있는 개인 정보 보호 정책 문서의 URL을 제공합니다.
getSettings
public WebSettings getSettings ()
- 이 WebView에 대한 설정을 제어하는데 사용되는 WebSettings 개체를 가져옵니다.
getTextClassifier
public TextClassifier getTextClassifier ()
- Added in API level 27
- 이 메서드는 WebView에서 사용되는 TextClassifier를 반환합니다.
- TextClassifier : 텍스트와 관련된 작업을 수행하며 텍스트의 내용을 분석하고 분류합니다.
getTitle
public String getTitle ()
- 현재 페이지의 제목을 가져옵니다.
- WebViewClient.onReceivedTitle이 호출 되기전 까지 현재 페이지의 제목입니다.
getUrl
public String getUrl ()
- 현재 페이지의 URL을 가져옵니다.
- 이는 WebViewClient.onPageStarted에 전달된 URL과 항상 동일하지는 않습니다.
- 해당 URL에 대한 로드가 시작되었더라도 현재 페이지가 변경되지 않았을 수도 있기 때문
getWebChromeClient
public WebChromeClient getWebChromeClient ()
- 이 메서드는 WebView의 chrome handler, 즉 WebChromeClient 객체를 반환 합니다.
getWebViewClassLoader
public static ClassLoader getWebViewClassLoader ()
- Added in API level 28
- 내부 WebView 클래스를 로드하는 데 사용된 ClassLoader를 반환 합니다.
- 이 메서드는 WebView 지원 라이브러리에서 사용하기 위한 것이므로 이 메서드를 사용할 이유가 없습니다.
getWebViewClient
public WebViewClient getWebViewClient ()
- Added in API level 26
- WebViewClient를 가져온다.
getWebViewLooper
public Looper getWebViewLooper ()
- Added in API level 28
- 이 메서드는 WebView의 호출이 발생하는 스레드에 해당하는 Looper를 반환합니다.
- Looper
- 안드로이드에서 스레드 간 메시지 전달 및 처리를 관리하는 데 사용되는 중요한 구성 요소 입니다.
- WebView는 다양한 작업을 수행하고 웹 콘텐츠를 로드하는 동안 다른 스레드와 통신해야할 수 있습니다.
- 따라서 WebView의 작업은 WebView가 실행 중인 스레드에서 처리해야 합니다.
requestFocus(View.FOCUS_DOWN)
- WebView에 초점을 맞춘다.
- View.FOCUS_DOWN은 특정방향으로 초점을 이동하는데 사용된다.
isFocusable = true
isFocusableInTouchMode = true
- 웹뷰가 포커스를 받을 수 있도록 설정한다.
- 터치모드에서도 포커스를 받을 수 있다.
setNetworkAvailable(true)
- 네트워크가 사용 가능함을 WebView에 알린다.
setInitialScale(100)
- WebView의 초기 확대/축소 비율을 설정합니다.
- 100은 기본 비율을 의미한다.
isScrollbarFadingEnabled = true
isVerticalScrollBarEnabled = true
isHorizontalScrollBarEnabled = true
isScrollContainer = false
overScrollMode = OVER_SCROLL_NEVER
- 스크롤바 설정을 합니다.
- 스크롤바가 사라지는 것을 허용
- 수직 및 수평 스크롤바를 활성화
- 오버스크롤하지 않도록 설정
setLayerType(View.LAYER_TYPE_HARDWARE, null)
- 렌더링 성능을 향상시키기 위해 하드웨어 가속을 시작한다.
setWebContentsDebuggingEnabled(true)
- 디버그 모드에서 웹 컨텐츠 디버깅을 활성화 한다.
'android' 카테고리의 다른 글
10.안드로이드 Manifest 공부 (0) | 2023.11.23 |
---|---|
9. Android RxJava 공부 (2) | 2023.11.22 |
6. WebSettings 안드로이드 공식문서 공부 (0) | 2023.09.23 |
5. 안드로이드 Application 공식문서 공부 (0) | 2023.09.19 |
4. (android) WebViewClient 공식문서 공부 (0) | 2023.09.17 |