2013-10-22 6 views
6

Ho qualcosa di simileCrea il codice HTML da WebView caricato

final WebView w=(WebView)findViewById(R.id.webView1); 
w.loadUrl("http://somepage.com"); 

C'è un modo per ottenere la pagina html che viene mostrato nella WebView ad un certo momento del tempo? Voglio ottenere questa pagina html come variabile stringa.

Il punto è che voglio ottenere il codice html dopo il javascript è eseguito su un lato client ...

eventuali linee guida?

+0

ho provato questa soluzione già, ma non funziona per me, forse è un problema con le versioni di Android ... – Lukap

+0

Considerando che appena accettato una risposta che è la stessa come il duplicato, trovo la tua risposta sorprendente. – CommonsWare

+0

beh, la gente dice che questa è una domanda stupida e hanno chiesto di chiudere così ..., non riesco ancora a leggere il testo html dalla webview, ma immagino che questo sia un problema solo sul mio telefono, perché tutti gli altri dicono che sta funzionando bene , è per questo che ho contrassegnato come risposta. – Lukap

risposta

14

Un modo che conosco;

decleration javascript gestore nella vostra attività

class LoadListener{ 
    public void processHTML(String html) 
    { 
     Log.e("result",html); 
    } 
} 

dopo Configurazione WebView;

webView.getSettings().setJavaScriptEnabled(true); 
webView.addJavascriptInterface(new LoadListener(), "HTMLOUT"); 

rispetto al client Webview;

webView.setWebViewClient(new WebViewClient() { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 

       return true; 
     }    

     @Override 
     public void onPageStarted(WebView view, String url, 
         Bitmap favicon) { 
     } 

     public void onPageFinished(WebView view, String url) { 
      view.loadUrl("javascript:window.HTMLOUT.processHTML('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');"); 
     } 
}); 
+0

Grazie, questo è quello che stavo cercando – Lukap

+3

Per i livelli API superiori a 17, è necessario aggiungere l'annotazione @JavascriptInterface affinché funzioni, altrimenti non verrà chiamato. – Tomap

+1

funziona in API 21 e Adroid 4.2.2? Non sembra funzionare per me Android 4.2.2 con API 21. Ma funziona in Android 4.4.2 e API 21. –

1

Un modo per ottenere il codice è utilizzare HttpClient come dato here. Un'altra soluzione è data nel seguente blog.

+1

Questo non porterà cookies ecc. –