코딩하는 일용직 노동자

WebView 에서 로드된 html 소스 가져오기 본문

안드로이드

WebView 에서 로드된 html 소스 가져오기

bacass 2020. 7. 20. 15:27

안드로이드 웹뷰에서 불러온 html 페이지의 소스를 얻어내는 방법.

    fun initView() {
        webView.settings.apply {
            this.setSupportMultipleWindows(false) // 새창 띄우기 허용
            this.setSupportZoom(false) // 화면 확대 허용
            this.javaScriptEnabled = true // 자바스크립트 허용
            this.javaScriptCanOpenWindowsAutomatically = false // 자바스크립트 새창 띄우기 허용
            this.loadWithOverviewMode = true // html의 컨텐츠가 웹뷰보다 클 경우 스크린 크기에 맞게 조정
            this.useWideViewPort = true // html의 viewport 메타 태그 지원
            this.builtInZoomControls = false // 화면 확대/축소 허용
            this.displayZoomControls = false
            this.layoutAlgorithm = WebSettings.LayoutAlgorithm.SINGLE_COLUMN // 컨텐츠 사이즈 맞추기
            this.cacheMode = WebSettings.LOAD_NO_CACHE // 브라우저 캐쉬 허용
            this.domStorageEnabled = true // 로컬 저장 허용
            this.databaseEnabled = true
        }

        webView.webViewClient = object: WebViewClient() {
            override fun onPageFinished(view: WebView?, url: String?) {
                super.onPageFinished(view, url)

                view?.loadUrl("javascript:window.Android.getHtml(document.getElementsByTagName('html')[0].innerHTML);") // <html></html> 사이에 있는 html 소스를 넘겨준다.
            }
        }

        webView.addJavascriptInterface(MyJavascriptInterface(), "Android")

        webView.loadUrl("https://www.google.co.kr/")

    }

    class MyJavascriptInterface {
        @JavascriptInterface
        fun getHtml(html: String) {
            Log.d("Test", "html: $html")
        }
    }

addJavascriptInterface 에서 설정한 name 을 주의해야 한다.
google.co.kr 의 html 소스를 얻어냈다.