Android:得到WebView当前页的html源码

WebView没有提供直接的API,需要用JavaScript变通处理一下。
本文试图总结一个最简单、优雅的代码。

1、先创建一个JavaScript接口类:

class MyJavaScriptInterface {
    @JavascriptInterface
    @SuppressWarnings("unused")
    public void processHTML(String html) {
        // 在这里处理html源码
    }
}

注意粗体的函数名processHTML,在第2步里还要用到。
关于@JavascriptInterface的详细说明,见:http://blog.csdn.net/z82367825/article/details/52187921

2、注册刚才的JavaScript接口:

        WebSettings settings = webView.getSettings();
        // 此方法需要启用JavaScript
        settings.setJavaScriptEnabled(true);

        // 把刚才的接口类注册到名为HTMLOUT的JavaScript接口
        webView.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT");

        // 必须在loadUrl之前设置WebViewClient
        webView.setWebViewClient(new WebViewClient() {
            @Override
            public void onPageFinished(WebView view, String url) {
                // 这里可以过滤一下url
                webView.loadUrl("javascript:HTMLOUT.processHTML(document.documentElement.outerHTML);");
            }
        });

        // 开始加载网址
        webView.loadUrl(url);

出处:https://stackoverflow.com/questions/2376471/how-do-i-get-the-web-page-contents-from-a-webview

时间: 2024-10-25 17:08:22

Android:得到WebView当前页的html源码的相关文章

Android的软件包管理服务PackageManagerService源码分析

Android系统下的apk程序都是通过名为PackageManagerService的包管理服务来管理的.PacketManagerService是安卓系统的一个重要服务,由SystemServer启动,主要实现apk程序包的解析,安装,更新,移动,卸载等服务.不管是系统apk(/system/app),还是我们手工安装上去的,系统所有的apk都是由其管理的. 以android 4.0.4的源码为例,android4.0.4/frameworks/base/services/java/com/

Android应用程序启动过程——Launcher源码分析

当我们在Launcher界面单击一个应用程序图标时就会启动一个程序,那这一个过程究竟发生了些哪样呢?让我们跟踪Launcher源码来分析一下吧. 先上流程图: step1.追踪Launcher  从源码中我们可以发现Launcher其实也是一个程序,它继承于Activity.找到该文件中的onCreate()方法,代码片段如下: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceSta

50个Android开发人员必备UI效果源码[转载]

50个Android开发人员必备UI效果源码[转载] http://blog.csdn.net/qq1059458376/article/details/8145497 Android 仿微信之主页面实现篇Android 仿微信之界面导航篇Android 高仿QQ 好友分组列表Android 高仿QQ 界面滑动效果Android 高仿QQ 登陆界面Android 对Path的旋转效果的拓展Android高仿360安全卫士布局源码Android SlidingDrawer 滑动抽屉效果Androi

android猜猜红桃A游戏源码

一个简单的猜扑克游戏,很适合初学者,点击TextView扑克由反面变为正面,未点击的TextView有透明效果,点击再玩一次按钮,运行洗牌程序undefined <ignore_js_op><ignore_js_op> 详细说明:http://android.662p.com/thread-876-1-1.html android猜猜红桃A游戏源码,布布扣,bubuko.com

【从零之六&amp;完结】android口语对话系统(含全部源码)

做了一个半月终于完成了,下面这个就是我参考Olympus/RavenClaw系统编写的对话管理系统,目前实现了一个简单的航班查询,部分截图 目前能实现的功能: 1.航班查询,具体的航班信息是我自己编的,下一步可以写个爬虫把真实的数据爬下来.编的数据放到了res/raw/flightinfo.txt中.航班查询就设定了三个要素,时间,起始地和目的地,想更全面的话可以增加任务树的agent即可. 2.在MainActivity中可以语音打开已安装的应用程序,这在前一篇博文也介绍过了. 3.别的功能就

【原】Android热更新开源项目Tinker源码解析系列之三:so热更新

本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 Android热更新开源项目Tinker源码解析系类之三:so文件热更新 转载请标明本文来源:http://www.cnblogs.com/yyangblog/p/6252855.html更多内容欢迎star作者的github:https://github.com/LaurenceYang/artic

【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新

上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源热更新 Android热更新开源项目Tinker源码解析系类之三:so热更新 转载请标明本文来源:http://www.cnblogs

Android培训HandlerThread的使用及源码解析

Android培训HandlerThread的使用及源码解析-北京尚学堂 关于Hanlder的基本使用可以参见博文<Android中Handler的使用>,如果想了解Handler.Looper.Thread等的相互关系以及内部实现原理可以参见博文<深入源码解析Android中的Handler,Message,MessageQueue,Looper>. Android中的API中对HandlerThread的描述是: Handy class for starting a new t

黎活明8天快速掌握android视频教程--24_网络通信之网页源码查看器

1 该项目的主要功能就是从将后台的html网页在Android的界面上显示出来 后台就是建立一个java web工程在工程尚建立一个html或者jsp文件就可以了,这里主要看Android客户端的程序 xml文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" andr