在WebView中获取网页源码
2013-11-01 00:00
411 查看
1. 使能javascript
webView.getSettings().setJavaScriptEnabled(true);
2. 编写本地接口 final class InJavaScriptLocalObj { public void showSource(String html) { Log.d("HTML", html); } }
3. 向网页暴露本地接口 webView.addJavascriptInterface(new InJavaScriptLocalObj(), "local_obj");
4. 编写自己的WebViewClient,并在onPageFinished中提取网页源码。 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); } }
5.组合在一起的代码为: 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); } } }
6.关键之处在于: view.loadUrl("javascript:window.local_obj.showSource('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');"); 运行,可以看到在showSource(String html)中打印了网页源码。
相关文章推荐
- Android: 在WebView中获取网页源码
- 在webview中获取网页源码
- Android 在WebView中获取网页源码
- Android: 在WebView中获取网页源码
- android系列: 在WebView中获取网页源码
- Android:在WebView中获取网页源码
- Android: 在WebView中获取网页源码
- Android: 在WebView中获取网页源码
- Android:在WebView中获取网页源码
- webview可以获取网页源码,进行重新排版吗
- Android: 在WebView中获取网页源码
- Android: 在WebView中获取网页源码
- Android: 在WebView中获取网页源码
- android 获取当前webview显示的网页的源码和网页中框架的源码
- Android: 在WebView中获取网页源码
- Android WebView 获取网页的标题
- Android中使用WebVIew展示网页源码, loadDataWithBaseURL()常见问题。
- webview 获取网页TITILE
- Hello,Views(四)用Web View实现浏览网页(附源码)
- Android Webview获取网页标题和文本内容