webview部分:  

        webView = (WebView) findViewById(R.id.webview);WebSettings webSettings = webView.getSettings();webSettings.setJavaScriptEnabled(true);webView.addJavascriptInterface(new JsInterface(), "JsInterface");webView.loadUrl("view-source:https://www.baidu.com/");webView.setWebViewClient(new WebViewClient(){@Overridepublic void onPageFinished(WebView view, String url) {super.onPageFinished(view, url);Log.i(TAG,"onPageFinished=="+url);String js="document.execCommand('selectall');"+"var txt;" +"if (window.getSelection) {" +"txt = window.getSelection().toString();" +"} else if (window.document.getSelection) {" +"txt = window.document.getSelection().toString();" +"} else if (window.document.selection) {" +"txt = window.document.selection.createRange().text;" +"}"+"var charactersets = document.characterSet;"+"JsInterface.getHtmlSource(txt,charactersets);";if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {webView.evaluateJavascript("javascript:" + js, null);Log.i(TAG, "evaluateJavascript-javascript");} else {webView.loadUrl("javascript:" + js);Log.i(TAG, "loadUrl-javascript");}}});}

js回调:

    class JsInterface{@JavascriptInterfacepublic void getHtmlSource(String html,String charactersets){Log.i(TAG,"getHtmlSource=="+html);mHtml=html;mCharactersets=charactersets;mHandler.sendEmptyMessage(100);}}private Handler mHandler=new Handler(){@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);saveHtml(mHtml,mCharactersets);}};

保存到本地:

   

    public boolean saveHtml(String html,String charactersets) {System.out.println("SaveHtml======================");SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss-SSS");String name=simpleDateFormat.format(new Date())+".html";File file =new File(Environment.getExternalStorageDirectory()+File.separator+Environment.DIRECTORY_DOWNLOADS+File.separator+name);try {if(file.exists()){file.delete();}file.createNewFile();} catch (IOException e) {e.printStackTrace();}try {Writer out = null;out = new OutputStreamWriter(new FileOutputStream(file.getAbsolutePath(), false), charactersets);out.write(html);out.close();Log.i(TAG,"saveHtml=="+file.getAbsolutePath());} catch (Exception e) {return false;}return true;}

这个功能花了一周时间,心累!

android webview 真正实现---保存整个网页源码相关推荐

  1. Android学习笔记---24_网络通信之网页源码查看器

    24_网络通信之网页源码查看器 2013-03-18 24_网络通信之网页源码查看器 ------------------------------------ 1.界面:一个输入text框,输入一个网 ...

  2. Android 在WebView中获取网页源码

    原文链接:http://www.cnblogs.com/hibraincol/archive/2011/10/26/2224866.html 1. 使能javascript: 1 webView.ge ...

  3. Android: 在WebView中获取网页源码

    1. 使能javascript: ? 1 webView.getSettings().setJavaScriptEnabled(true); 2. 编写本地接口 ? 1 2 3 4 5 finalcl ...

  4. 达内android 代码,深圳达内Android网页源码查看器.pdf

    深圳达内 Android 网页源码查看器 ? 1 <?xml version="1.0" encoding="utf-8"?> 2 < Lin ...

  5. android查看网页源码,流数据

    工具: 获取流数据 package com.glsite.htmlviewer;import java.io.ByteArrayOutputStream; import java.io.InputSt ...

  6. webbrowser抓取php网页源码,获取webbrowser控件 网页的源码(收藏)

    获取webbrowser控件 网页的源码(收藏) 翻译|其它|编辑:郝浩|2005-04-28 09:45:00.000|阅读 3152 次 概述: 我在网上找到使用rft控件保存webbrowse文 ...

  7. webclient无法获取html文件,C# WebClient获取网页源码的方法

    效果如图 完整代码如下using System; using System.Collections.Generic; using System.ComponentModel; using System ...

  8. [爬虫][python][入门][网页源码][百度图片][豆瓣TOP250]

    Robots协议 查看爬取规则 遵守相关法律法规 Robots协议(也称为爬虫协议.机器人协议等)的全称是"网络爬虫排除标准"(Robots Exclusion Protocol) ...

  9. android 代码发adb,Android预安装软件adb命令编译源码

    Android预安装软件&adb命令&编译源码 发布时间:2020-06-02 17:28:41 来源:51CTO 阅读:895 作者:年少的风 1.预安装软件: 将eclipse下的 ...

  10. Python爬取网页源码,图片和文字到本地

    import re import os import os.path from time import sleep from urllib.parse import urljoin from urll ...

最新文章

  1. swoole安装异步reids
  2. Java 多线程 之 suspend挂起 线程实例
  3. 计算机虚拟内存的设置
  4. 信息竞赛进阶指南--搜索相关(模板)
  5. YbtOJ#20060-[NOIP2020模拟赛B组Day3]字串修改【模拟】
  6. python array函数_Python 中的range()函数与array()函数
  7. Leetcode--455. 分发饼干
  8. MySQL学习笔记:MySQL管理
  9. iOS中创建动态库及调用方法
  10. luoguP3912 素数个数
  11. kindeditor php配置,KindEditor-编辑器配置参数属性 | 小灰灰博客
  12. 最大流Dinic算法
  13. Android Error:warning: Ignoring InnerClasses attribute for an anonymous inner class
  14. Linq 语法的一系列问题,菜鸟求解。
  15. 使用第三方广告服务器的好处
  16. 【potplayer安装及设置LAV Splitter】
  17. Excel表格多个工作表数据汇总求和
  18. [46]python画出心形图
  19. 视频在线发布网站HTML模板分享
  20. DevC++ 下载和安装

热门文章

  1. 支付宝PM告诉你,互联网产品经理的工作职责有哪些?
  2. 官方固件库V1.4版本介绍
  3. 人脸识别最全综述:详解人脸识别技术、人才、趋势
  4. mysql统计每个学生的选课门数_SQL一个查询中包含两个聚集函数怎么弄啊例如,查询每名学生的选课门数和平均成绩怎么弄啊...
  5. APP赚钱盈利的8大方法
  6. 计算图像中任意四个点连成的四边形面积与Ground truth的IOU(Python)
  7. 360云盘php,360云盘外链解析php源码
  8. Markdown转Jupyter
  9. java 数组定义是必须指定长度吗
  10. 十大热门职位发布 高薪行业一目了然