투케이2K

136. (AndroidStudio/android/java) 웹뷰 (webview) loadUrl 사용해 로드 완료된 웹 페이지 html body 데이터 전체 확인 실시 본문

Android

136. (AndroidStudio/android/java) 웹뷰 (webview) loadUrl 사용해 로드 완료된 웹 페이지 html body 데이터 전체 확인 실시

투케이2K 2021. 5. 10. 09:30

/* =========================== */

[ 개발 환경 설정 ]

개발 툴 : AndroidStudio

개발 언어 : java

/* =========================== */

/* =========================== */

[소스 코드]

 

//========= [초기 웹뷰 설정 시 자바 스크립트 경로 지정 실시] =========
public void Javascript_To_Android(){
	//TODO 자바 스크립트 통신 경로 지정
	main_webview.addJavascriptInterface(new A_Webview.AndroidBridge(), "Android"); //자바스크립트에 대응할 함수를 정의한 클래스 붙여줌
}





//========= [웹 로딩할 동안 호출 상태 확인 실시] =========
main_webview.setWebChromeClient(new WebChromeClient() {
	@Override
	public void onProgressChanged(WebView view, int progress) {
		Log.d("---","---");
		Log.w("//===========//","================================================");
		Log.d("","\n"+"[A_Webview > onProgressChanged() 메소드 : 웹뷰 호출 상황 확인 실시]");
		Log.d("","\n"+"["+"웹 호출 상황 - "+String.valueOf(progress)+"]");
		Log.w("//===========//","================================================");
		Log.d("---","---");
		/**
		 * [새로 들러온 값이 기존의 값보다 커야만 기존값을 교체한다]
		 */

		//TODO 웹페이지 로드가 완료된 경우
		if(progress >= 100){
			//TODO 자바스크립트 기본 메소드로 html 소스를 통째로 지정해서 인자로 넘김
			view.loadUrl("javascript:window.Android.getHtml(document.getElementsByTagName('body')[0].innerHTML);");
		}
	}
});





//========= [자바 스크립트 통신 데이터를 확인하기 위한 브릿지] =========
//TODO [핸들러를 통한 JavaScript 이벤트 반응]
Handler handler = new Handler(); 

//TODO [내부 브릿지 클래스 선언 및 메소드 생성]
class AndroidBridge {
	@JavascriptInterface
	public void getHtml(final String arg) {
		handler.post(new Runnable() {
			public void run() {
				//TODO BODY에 포함된 HTML 내용 전체 통째로 받아온다
				Log.d("---","---");
				Log.w("//===========//","================================================");
				Log.d("","\n"+"[A_Webview > getHtml() 메소드 : 웹뷰 내용 확인 실시]");
				Log.d("","\n"+"["+"내용 - "+String.valueOf(arg)+"]");
				Log.w("//===========//","================================================");
				Log.d("---","---");
			}
		});
	}
}

/* =========================== */

/* =========================== */

[결과 출력]

/* =========================== */

 

반응형
Comments