使能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. 2014.01.21 ——— android 关联android-support源码
  2. Android(安卓)Chromium WebView html js 开发系列
  3. 细数Android(安卓)Studio中使用junit4测试框架中的坑
  4. Android内容提供者源码
  5. android源码下载方式
  6. 【30篇突击 android】源码统计四
  7. Android(安卓)4.0.1 源码下载,编译和运行
  8. android支持多行的radiogroup
  9. [android源码下载索引贴】微信+二维码那都不是事......

随机推荐

  1. 怎样在Android中解析doc、docx、xls、xls
  2. Butter Knife 使用方法
  3. Android(安卓)- Gradle "xxx" project re
  4. Android(安卓)Listview分组特效:滑动分组
  5. Android英文文档翻译系列(1)——AlarmMan
  6. Android生成随机数
  7. Android(安卓)Studio与eclipse常用快捷键
  8. Installation error: INSTALL_CANCELED_B
  9. Android(安卓)APP —— “时光摄影”的搭
  10. android UI 的去标题栏和去状态栏(全屏)