addJavascriptInterface를 이용하면 가능합니다.
1. 웹뷰에 addJavascriptInterface메소드를 사용하여 html 소스를 받을 클래스를 등록합니다.
ex) mWeb.addJavascriptInterface(new BkPinNumberGetter(), "HTMLOUT");
BkPinNumberGetter는 html 소스를 웹뷰를 통해서 받을 클래스 입니다.
"HTMLOT" 은 웹뷰에서 해당 클래스를 인식하는 키값이라고 생각하시면 됩니다.
2. 웹뷰에 WebViewClient를 설정하여 웹페이지가 로딩되었는지 판단합니다.
mWeb.setWebViewClient(new WebViewClient(){
//페이지 로딩이 끝나면 불린다.
public void onPageFinished(WebView view, String url){
Log.d("WebViewClient", url); //URL확인을 위한 logcat
if("
http://www.daum.net".equals(url)){ //로딩이 끝난 페이지가 내가 소스를 받을 페이지 이면
//웹뷰내의 html 내용을 등록된 클래스로 넘김
view.loadUrl("javascript:window.HTMLOUT.viewSource('</head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
}
}
});
public class BkPinNumberGetter {
public void viewSource(String html){
}
}
* HTMLOUT은 웹뷰에 객체 등록할때 입력한 키값
*viewSource는 웹뷰에 등록된 객체에 있는 메소드 명
핵심은 자바스크립트로 페이지의 소스를 긁어서 웹뷰에 등록한 객체의 메소드를 통해서 값을 넘겨주는 것 입니다.