Android: 在WebView中获取网页源码

1. 使能javascript:

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

2. 编写本地接口

1 2 3 4 5 finalclassInJavaScriptLocalObj { publicvoidshowSource(String html) { Log.d("HTML", html); } }


3. 向网页暴露本地接口

1 webView.addJavascriptInterface(newInJavaScriptLocalObj(),"local_obj");


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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 finalclassMyWebViewClientextendsWebViewClient{ publicbooleanshouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); returntrue; } publicvoidonPageStarted(WebView view, String url, Bitmap favicon) { Log.d("WebView","onPageStarted"); super.onPageStarted(view, url, favicon); } publicvoidonPageFinished(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 packagecom.hi.briancol.htmlsource; importandroid.app.Activity; importandroid.graphics.Bitmap; importandroid.os.Bundle; importandroid.util.Log; importandroid.webkit.WebView; importandroid.webkit.WebViewClient; publicclassHtmlSourceextendsActivity { privateWebView webView; /** Called when the activity is first created. */ @Override publicvoidonCreate(Bundle savedInstanceState) { 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(" http://www.cnblogs.com/hibraincol/"); } finalclassMyWebViewClientextendsWebViewClient{ publicbooleanshouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); returntrue; } publicvoidonPageStarted(WebView view, String url, Bitmap favicon) { Log.d("WebView","onPageStarted"); super.onPageStarted(view, url, favicon); } publicvoidonPageFinished(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); } } finalclassInJavaScriptLocalObj { publicvoidshowSource(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获得当前系统时间、星期几、周几
  2. Android搜索框之PopupWindow+ListView实现
  3. 分享20个Android游戏源码,希望大家喜欢哈!
  4. android camera 源码分析
  5. Android的pagerAdapter源码,在线查看网址。
  6. Android(安卓)IntentService 深入分析
  7. Android存储系统之源码篇
  8. Android显示图片自适应(控件+网页)
  9. Android英语单词记忆程序源码

随机推荐

  1. delphi xe6 for android 自带控件Locatio
  2. Android中实现JSON字符串和JSON对象的转
  3. Android图集的上下左右拖动及动画效果研
  4. Android(安卓)logcat保存当前应用程序的
  5. Android截屏事件监听
  6. Android制造 FaceID [FaceNet + MobileNe
  7. Android(安卓)安卓动画 属性动画 - 移动
  8. 详细讲解Android(安卓)SDK Manager下载AP
  9. Android日记之2012\01\01
  10. Android(安卓)studio导入library的正确方