마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

webview에서 html 코드를 들고 올수 있나요?

0 추천
webview에서 특정 사이트를 띄운후 webview에 띄워진 html 소스를 들고 올수 있나요??
익명사용자 님이 2013년 12월 12일 질문

1개의 답변

0 추천
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는 웹뷰에 등록된 객체에 있는 메소드 명

 

핵심은 자바스크립트로 페이지의 소스를 긁어서 웹뷰에 등록한 객체의 메소드를 통해서 값을 넘겨주는 것 입니다.
원조안드로이드 (58,190 포인트) 님이 2013년 12월 12일 답변
...