2013-10-22 102 views
6

獲取的HTML代碼我有這樣的事情從加載的WebView

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

有沒有什麼辦法讓在一定的時間瞬間顯示在WebView中的HTML頁面? 我想獲得這個HTML頁面作爲字符串變量。

關鍵是我要的JavaScript是在客戶端執行後得到的html代碼...

任何指引?

+0

我試過的解決方案了,但它並沒有爲我工作,也許這是問題的Android版本... – Lukap

+0

考慮,你只是接受了一個答案是一樣的重複,我覺得你的反應奇怪。 – CommonsWare

+0

好人們說這是愚蠢的問題,他們要求關閉所以......我仍然無法從webview中讀取html文本,但我想這只是在我的手機上的問題,因爲其他人都說這是工作正常這就是爲什麼我標記爲回答。 – Lukap

回答

14

我知道的一種方法;

decleration JavaScript處理您的活動

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

配置您的WebView後;

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

比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

謝謝,這就是我正在尋找的 – Lukap

+3

對於API級別高於17,你需要添加@JavascriptInterface註釋來工作,否則將不會被調用。 – Tomap

+1

在API 21和Adroid 4.2.2中做這項工作嗎?似乎沒有爲我的Android 4.2.2與API 21工作。但它在Android 4.4.2和API 21的工作。 – 2014-12-03 22:30:37

1

獲取代碼的一種方法是使用HttpClient,如here。另一個解決方案在以下blog中給出。

+1

這不會帶來餅乾等 –