Android: 在WebView中获取网页源码
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)中打印了网页源码。
Android: 在WebView中获取网页源码相关推荐
- Android 在WebView中获取网页源码
原文链接:http://www.cnblogs.com/hibraincol/archive/2011/10/26/2224866.html 1. 使能javascript: 1 webView.ge ...
- 使用WebBrowser控件获取网页源码的方法
使用WebBrowser控件获取网页源码的方法,网上有很多介绍,但绝大多数的人都是使用以下的方法获取: (WebBrowser1.Document as IHtmlDocument2).body.ou ...
- vc++获取网页源码之使用import+接口方式
1.使用IWinHttpRequest获取网页源码 首先要创建基于对话框的mfc应用程序 2.import+接口方式 首先导入winhttp.dll,使用IWinHttpRequest接口 #impo ...
- webclient无法获取html文件,C# WebClient获取网页源码的方法
效果如图 完整代码如下using System; using System.Collections.Generic; using System.ComponentModel; using System ...
- [转载]关于webbrowser,innet,xmlhttp获取网页源码的比较!
webbrowser: 示例: For i = 0 To WebBrowser1.Document.All.length - 1 If WebBrowser1.Document.All(i) ...
- 如何快速获取网页源码(直接把网站的 js css html 扒下来的)
如何快速获取网页源码? 我们在学习和研究的时候,或者看到非常酷炫的页面效果,需要网站的源代码进行借鉴,但每次需要下载网站源代码,我们都需要找到一个,下载一个,每次只能下载一个文件,非常缓慢,而且还要自 ...
- POST教程笔记 - WinHttp获取网页源码
①.WinINet与WinHttp的异同点,为什么使用WinHttp讲解? 详情见:<WinINet与WinHttp总结>文档,已经打包给大家了. ②.WinHttp接口调用方式: 微软官 ...
- PHP如何获取网页源码?
很多人可能会说那不是很简单 直接 file_get_contents ,但是有的时候这样也是获取不到的 那怎么办? 用CURL,某些不太懂得朋友可能会发现CURL也获取不到,其实是你没配置对 有一个属 ...
- Python 爬虫 之 爬虫的一些基本知识和基本操作(爬取视频、图片、获取网页源码等)整理
Python 爬虫 之 爬虫的一些基本知识和基本操作(爬取视频.图片.获取网页源码等)整理 目录
最新文章
- linux 替换文件中某个字符串_word中如何删除包含某个特定字符串的整个段落?...
- 15. 二维数组中的查找【难度: 一般 / 知识点: 思维】
- python里有常量吗?(没有,但可自行定义)
- linux按时间升序排列文件,Linux展示以时间生升序显示文件
- kafka常用命令及问题解决
- php星期和时间获取
- c语言中int型变量的字节数
- ICLR最佳论文“彩票假设”:如何通过彩票假设构建轻量化模型(上)
- 【那些年学过的计算机基础】--计算机发展史(图片版)
- 使用GPIO输出控制Led亮灭(CC2530)
- 【C++】Lambda 表达式详解
- SNIPER python3.5环境配置成功记录
- Sublime Text正确的打开方式
- Grab第一季营收2.28亿美元:亏损4.35亿美元 收窄35%
- 2021,你还会继续坚持flash吗...
- 5篇关于特征嵌入的研究论文推荐
- C++ map用法总结和vector用法总结
- 可以给小米盒子装鸿蒙系统吗,小米盒子可以安装第三方软件吗_小米盒子怎么安装第三方软件-系统城...
- 计算机水平要空着吗,计算机等级考试一级考试练习题
- 2022年中国互联网广告行业市场规模及发展前景分析 2027年中国互联网广告规模或将接近9000亿元
热门文章
- OpenCV-腐蚀cv::erode
- html 5入门,HTML5入门
- android进程守护 失效,保持Service不被Kill掉的方法--双Service守护 Android实现双进程守护 1...
- android动态添加控件在指定位置,Android 如何动态添加 View 并显示在指定位置。
- 如何装系统,如何装kali linux系统
- C++中内存分配方式、空指针及野指针的区别
- 基于python的测试报告自动化生成
- 英语计算机试卷二,计算机专业英语模拟试题2参考答案.doc
- angular 解决闪烁问题_AngularJS页面访问时出现页面闪烁问题的解决
- matlab虚拟现实之V-Realm Builder2建模第二部分