1. 使能javascript:

?
1 webView.getSettings().setJavaScriptEnabled( true );

2. 编写本地接口

?
1 2 3 4 5 final class InJavaScriptLocalObj { public void showSource(String html) { Log.d( "HTML" , html); } }


3. 向网页暴露本地接口

?
1 webView.addJavascriptInterface( new InJavaScriptLocalObj(), "local_obj" );


4. 编写自己的WebViewClient,并在onPageFinished中提取网页源码。

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 final class MyWebViewClient extends WebViewClient{ public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true ; } public void onPageStarted(WebView view, String url, Bitmap favicon) { Log.d( "WebView" , "onPageStarted" ); super .onPageStarted(view, url, favicon); } public void onPageFinished(WebView view, String url) { Log.d( "WebView" , "onPageFinished " ); view.loadUrl( "javascript:window.local_obj.showSource('<head>'+" + "document.getElementsByTagName('html')[0].innerHTML+'</head>');" ); super .onPageFinished(view, url); } }

组合在一起的代码为:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 package com.hi.briancol.htmlsource; import android.app.Activity; import android.graphics.Bitmap; import android.os.Bundle; import android.util.Log; import android.webkit.WebView; import android.webkit.WebViewClient; public class HtmlSource extends Activity { private WebView webView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.main); webView = (WebView)findViewById(R.id.webview); webView.getSettings().setJavaScriptEnabled( true ); webView.addJavascriptInterface( new InJavaScriptLocalObj(), "local_obj" ); webView.setWebViewClient( new MyWebViewClient()); webView.loadUrl( "http://www.cnblogs.com/hibraincol/" ); } final class MyWebViewClient extends WebViewClient{ public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true ; } public void onPageStarted(WebView view, String url, Bitmap favicon) { Log.d( "WebView" , "onPageStarted" ); super .onPageStarted(view, url, favicon); } public void onPageFinished(WebView view, String url) { Log.d( "WebView" , "onPageFinished " ); view.loadUrl( "javascript:window.local_obj.showSource('<head>'+" + "document.getElementsByTagName('html')[0].innerHTML+'</head>');" ); super .onPageFinished(view, url); } } final class InJavaScriptLocalObj { public void showSource(String html) { Log.d( "HTML" , html); } } }

关键之处在于:

view.loadUrl("javascript:window.local_obj.showSource('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");

运行,可以看到在showSource(String html)中打印了网页源码。

更多相关文章

  1. Android开发_如何调用 浏览器访问网页和Html文件
  2. Ubuntu12.04下的Android 源码编译
  3. Android 属性动画(Property Animation) 完全解析【附源码】
  4. [Android]Android系统启动流程源码分析
  5. [Android]瀑布流实例android_waterfall源码分析
  6. Android中Activity启动过程源码阅读笔记:
  7. 手把手教你查看android系统源码

随机推荐

  1. Android The SourceSet 'instrumentTest'
  2. Android 网上学习工具网址
  3. Android MQTT
  4. Android实现固定屏幕显示的方法
  5. Android应用程序UI硬件加速渲染的Display
  6. Android三种菜单实例分析
  7. Android 处理屏幕解锁和设置锁屏密码
  8. Android捕鱼游戏1.10破解
  9. Google API V2申请及Google Map简单应用
  10. Android中RelativeLayout及TableLayout使