原理:重写WebViewClient的onPageFinished方法,在onPageFinished中加载一段js代码,js代码再调用本地方法
用下面的方法可以获取网页的html源码importandroid.app.Activity;
importandroid.graphics.Bitmap;
importandroid.os.Bundle;
importandroid.util.Log;
importandroid.webkit.WebView;
importandroid.webkit.WebViewClient;
publicclassHtmlSourceextendsActivity{
privateWebViewwebView;
/**Calledwhentheactivityisfirstcreated.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webView=(WebView)findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(newInJavaScriptLocalObj(),"local_obj");
webView.setWebViewClient(newMyWebViewClient());
webView.loadUrl("/hibraincol/");
}
finalclassMyWebViewClientextendsWebViewClient{
publicbooleanshouldOverrideUrlLoading(WebViewview,Stringurl){
view.loadUrl(url);
returntrue;
}
publicvoidonPageStarted(WebViewview,Stringurl,Bitmapfavicon){
Log.d("WebView","onPageStarted");
super.onPageStarted(view,url,favicon);
}
publicvoidonPageFinished(WebViewview,Stringurl){
Log.d("WebView","onPageFinished");
view.loadUrl("javascript:window.local_obj.showSource('
'+"+
"document.getElementsByTagName('html')[0].innerHTML+'');");
super.onPageFinished(view,url);
}
}
finalclassInJavaScriptLocalObj{
publicvoidshowSource(Stringhtml){
Log.d("HTML",html);
}
}
}