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 EditText 设置密码锁源码
  2. Android 9.0 System.loadLibrary 的源码解析
  3. Android Sync 同步 源码问题解决方案
  4. Android中定义接口的用法
  5. android AsyncTask 源码跟踪
  6. Android 7.0 NotificationListenerService源码分析
  7. android 2.3源码 下载与编译 以前我让我小弟写的,今天看到就转了
  8. Android View.setOnclickListener(),View.onTouchEvent(),View.s

随机推荐

  1. Android(安卓)Studio 引入编写好的.so库
  2. [安卓基础] 001.学习Android开发的好教程
  3. android平台上的文件下载,文件和文件的操
  4. 关于Android如何改变ProgressBar进度条颜
  5. Android Talker(3)Go on with the REST S
  6. Android 日期和时间选择控件的开发
  7. 利用 nodejs 自动生成 Android 语言包实
  8. 一步步教你用Android(安卓)Google Map(一)
  9. Android之父安迪·鲁宾:极客文化的代表
  10. 修改 Android 开机 LOGO