即使没有网络可用,如何保存 WebView 内容以供显示?

2023-12-05

我正在创建一个应用程序并使用 WebView 来打开 URL。我看到一些应用程序向用户提供“保存页面”(网页)选项。

我想知道如何从 WebView 保存页面,以便我可以在用户请求时将其显示给用户。


也许使用缓存是最好的方法......为此你应该检查http://developer.android.com/reference/android/webkit/WebSettings.html

“管理 WebView 的设置状态。当 WebView 首次出现时 创建后,它会获得一组默认设置。这些默认设置 将从任何 getter 调用中返回。获得WebSettings对象 WebView.getSettings() 与 WebView 的生命周期相关。如果一个 WebView已被销毁,对WebSettings的任何方法调用都会抛出 一个 IllegalStateException。”

具体来说:

public static final int **LOAD_CACHE_ONLY**

自:API 级别 1 不使用网络,仅从缓存加载。与 setCacheMode(int) 一起使用。 常量值:3 (0x00000003)

Or

public static final int **LOAD_CACHE_ELSE_NETWORK**

自:API 级别 1 如果内容存在,即使过期(例如历史导航),也使用缓存。如果内容不在缓存中,则从网络加载。与 setCacheMode(int) 一起使用。 常量值:1 (0x00000001)

Update1:

嗯“所有生活中的蹩脚代码”例如:

public static InputStream fetch(String url) throws MalformedURLException,
        IOException {
    DefaultHttpClient httpClient = new DefaultHttpClient();
    HttpGet request = new HttpGet(url);
    HttpResponse response = httpClient.execute(request);
    return response.getEntity().getContent();
}


private static String convertStreamToString(InputStream is)
        throws IOException {

    StringWriter writer = new StringWriter();
    IOUtils.copy(is, writer, "UTF-8");
    return writer.toString();
}

因此,您可以使用以下命令获取网址输入流获取(字符串 url)然后使用 private static String 将该流转换为 StringConvertStreamToString(InputStream 是)并将该流保存到文件中,稍后您可以将该内容加载到网络视图......稍后阅读

Update2:

或者你可以做一些Java序列化的东西...不记得这是否适用于android xD

发现 Java 序列化 API 的秘密 http://java.sun.com/developer/technicalArticles/Programming/serialization/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

即使没有网络可用,如何保存 WebView 内容以供显示? 的相关文章

  • 类型容器“Android 依赖项”引用不存在的库 android-support-v7-appcompat/bin/android-support-v7-appcompat.jar

    我在尝试在我的项目中使用 Action Bar Compat 支持库时遇到了某种错误 我不知道出了什么问题 因为我已按照此链接中的说明进行操作 gt http developer android com tools support libr
  • React Native 从 JavaScript 代码内部访问 strings.xml

    有没有办法访问当前值android app src main res values strings xml从 JavaScript 代码内部 我想为每个构建放置不同的端点 URL 但我什至无法检测到反应本机代码内的构建类型 而不必求助于 D
  • StrictMode 策略违规:我的应用程序中存在 android.os.strictmode.LeakedClosableViolation?

    Android 开发新手 第一次在我的应用程序上尝试 StrictMode 我注意到以下内容 并想知道这是否是我的应用程序或库中的问题 我不太清楚 谢谢你 D StrictMode StrictMode policy violation a
  • Android - 从资产中解析巨大(超大)JSON 文件的最佳方法

    我正在尝试从资产文件夹中解析一些巨大的 JSON 文件 我如何加载并添加到 RecyclerView 我想知道解析这种大文件 大约 6MB 的最佳方法是什么 以及您是否知道可以帮助我处理此文件的良好 API 我建议您使用GSON lib h
  • Android 30+ 中的视频捕获意图 - 只有所有者才能与待处理项目交互

    我正在尝试在我的应用程序上捕获视频 它可以在 android API 30 以下运行 但不能在 30 以上运行 似乎在 sdk 30 之后 android 不允许完全读取外部存储 作用域存储 我目前遇到这个错误 java lang Ille
  • 找不到 com.google.firebase:firebase-core:9.0.0 [重复]

    这个问题在这里已经有答案了 在遵循有些不一致的指示之后here https firebase google com docs admob android quick start name your project and here http
  • java.lang.NoClassDefFoundError:org.apache.batik.dom.svg.SVGDOMImplementation

    我在链接到我的 Android LibGDX 项目的 Apache Batik 库时遇到了奇怪的问题 但让我们从头开始 在 IntelliJ Idea 中我有一个项目 其中包含三个模块 Main Android 和 Desktop 我强调的
  • 在画布上绘图

    我正在编写一个 Android 应用程序 它可以在视图的 onDraw 事件上直接绘制到画布上 我正在绘制一些涉及单独绘制每个像素的东西 为此我使用类似的东西 for int x 0 x lt xMax x for int y 0 y lt
  • Android 模拟器插件无法初始化后端 EGL 显示

    我在 Cloudbees 上设置了 Jenkins 作业 并且可以在那里成功签出并编译我的 Android 项目 现在我想在 android 模拟器中运行一些 JUnit 测试并添加 Android 模拟器插件 我将 显示模拟器窗口 选项设
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • 在 HTTPResponse Android 中跟踪重定向

    我需要遵循 HTTPost 给我的重定向 当我发出 HTTP post 并尝试读取响应时 我得到重定向页面 html 我怎样才能解决这个问题 代码 public void parseDoc final HttpParams params n
  • 尝试将相机切换回前面但出现异常

    尝试将相机切换回前面 但出现异常 找不到 问题请检查并帮助 error 01 27 11 49 00 376 E AndroidRuntime 30767 java lang RuntimeException Unable to start
  • 发布android后更改应用内购买项目的价格

    在 Google Play 上发布后 是否可以更改应用内购买商品的价格 我假设该应用程序也已发布 完整的在线文档位于http developer android com http developer android com也http sup
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • 你的CPU不支持NX

    我刚刚下载了 android studio 但是我遇到了一个问题 当我运行它时 它说你的 cpu 不支持 NX 我应该怎么办 NX 或实际上是 NX 处理器位 是处理器的一项功能 有助于保护您的 PC 免受恶意软件的攻击 当此功能未启用并且
  • 设置 cookie 时中断 JavaScript 执行

    当设置 cookie 时 是否可以始终中断浏览器开发人员工具中的 javascript 执行 无需显式设置 JS 断点 document cookie 在 html head 块的开头添加此代码片段效果很好
  • Android Studio - Windows 7 上的 Android SDK 问题

    我对 Google i o 2013 上发布的最新开发工具 Android Studio 有疑问 我已经成功安装了该程序并且能够正常启动 我可以导入现有项目并对其进行编辑 但是 当我尝试单击 SDK 管理器图标或 AVD 管理器图标时 或者
  • Android:膨胀布局时出现 StackOverFlowError 和 InvokingTargetException

    首先 对不起我的英语 我在膨胀布局时有一个问题 我有一个自定义视图 从 LinearLayout 扩展而来 称为按钮帮助 我在名为的布局上使用该视图加载活动 我的以下代码在所有设备和模拟器上都能完美运行 但具有 QVGA 屏幕 例如 Sam
  • 如何确定对手机号码的呼叫是本地呼叫还是 STD 或 ISD

    我正在为 Android 开发某种应用程序 但不知道如何获取被叫号码是本地或 STD 的号码的数据 即手机号码检查器等应用程序从哪里获取数据 注意 我说的是手机号码 而不是固定电话 固定电话号码 你得到的数字是字符串类型 因此 您可以获取号
  • 实现滚动选择 ListView 中的项目

    我想使用 ListView 您可以在其中滚动列表来选择一个项目 它应该像一个 Seekbar 但拇指应该是固定的 并且您必须使用该栏来调整它 我面临的一个问题是 我不知道这种小部件是如何调用的 这使得我很难搜索 所以我制作了下面这张图片 以

随机推荐

  • 在 Windows 8 上使用 gem 安装 SASS

    我尝试在 Windows 8 x64 上安装 SASS 但即使防火墙已关闭 仍然出现错误 我发出这个命令 C Ruby200 x64 bin gt gem install sass or C Ruby200 x64 bin gt ruby
  • Bootstrap 滑动选项卡(不是选项卡内容)

    我正在开发一个项目并使用 Bootstrap Tabs 作为我的选项卡 用户可以创建新选项卡 因此问题是 超过N选项卡 其中N取决于浏览器的宽度 导致此行为 我浏览了一下 Bootstrap HTML 选项卡代码 选项卡是li里面的元素ul
  • 如何获取客户端的计算机名称

    我在另一篇文章中看到了这个问题 但解决方案无法正常工作 我用 System Net Dns GetHostEntry HttpContext Current Request ServerVariables Item REMOTE HOST
  • 在 Tkinter 中向按钮添加图像

    我正在尝试将图像添加到按钮 但是当我尝试执行当前代码时遇到一些问题 它所显示的只是一张没有文字的图像 我也看不到按钮 有什么方法可以修复我当前的代码吗 from tkinter import import tkinter as tk roo
  • 发送意图的进程的 Pid

    我正在尝试发现向我发送意图的进程的进程 ID 或包名称 我不想将进程 ID 或包名称放在额外的内容中 正如其他一些问题所要求的那样 因为我不想允许欺骗 我使用的代码是 Override public void onCreate Bundle
  • 为什么session[:]在grape-rails中不起作用?

    我使用 Rails 和 Grape 作为 API 我只是好奇为什么没有session something 葡萄的方法 我可以创建 cookie 但也无法创建签名 cookie 它给我一个错误 Grape 是一个用于构建 API 的轻量级框架
  • 主屏幕网络应用程序的 Facebook 身份验证已损坏!+

    使用元名称 apple mobile web app capable 内容 yes 删除所有移动 safari ui 时 Facebook connect js js api 无法与主屏幕 web 应用程序一起使用 经过身份验证后 我会看到
  • 从活动之外的类启动意图

    我有两项活动 其中一项称为MyActivity 我希望他们都能够使用位于我们可以调用的类中的函数MyClass In MyClass 我尝试使用意图来启动活动AnotherActivity 由于构造函数采用上下文作为参数 因此我只是尝试在构
  • Hibernate @Version 注释

    hibernate version 和 ManyToOne Mapping 之间的关系是什么 假设我有两个表 部门 和 员工 这是部门是主表 和明细表中的员工 在 Employee 表中 部门 ID 作为外键引用 这是我的课程 Public
  • 在 PowerShell 上将节点从一个 XML 导入到另一个 XML

    我需要将名称为 ProjectOptions 的节点从default xml 复制到original xml 而不修改任何其他内容 原始 xml
  • 如何将 Google 数据存储用于未托管在 Google 应用引擎中的网络应用?

    我想在我的网络应用程序中使用谷歌的数据存储 但不想将其托管在谷歌应用程序引擎中 我想将其托管在其他机器上 那么我如何在这样的网络应用程序中使用数据存储 会更经济吗 您需要遵循从其他平台访问 Cloud Datastore API程序 本部分
  • 列表的 ViewModel 验证

    我有以下视图模型定义 public class AccessRequestViewModel public Request Request get private set public SelectList Buildings get pr
  • Rust *准确地*如何查找模块?

    Rust 用于从文件中查找模块的确切规则集是什么 我在网上找到的关于模块的每一个解释都说 这是模块的目的 这是一个例子 没有一个给出完整 全面 100 准确的解释Rust 如何查找模块 就连铁锈参考没有告诉您板条箱根和导入文件是否都需要声明
  • 使用 printf 连续打印数字并填充零

    在 C 中 使用 printf 我想打印一个数字序列 所以我从 for 循环中得到 1 2 9 10 11 我根据这些数字创建文件 但是当我使用 ls 列出它们时我得到 10 11 1 2 因此 我不知道如何打印 而不是尝试使用 bash
  • 使用 FileSavePicker 在 Windows Phone 8.1 中保存图像

    我想使用文件保存选择器保存图像 我在用this保存链接 但它仅适用于文本 我如何修改它以保存图像 正如你所提供的the link那么我假设你设法得到了存储文件 after 延续 这就是它在 WP8 1 运行时的工作方式 我还假设你有一个St
  • Scala 的 apply() 方法魔法是如何工作的?

    在 Scala 中 如果我定义一个名为apply在类或顶级对象中 每当我将一对括号附加到该类的实例 并为apply 在他们之间 例如 class Foo x Int def apply y Int x x y y val f new Foo
  • ASP.Net Ajax - PageMethods 同步调用和检索结果

    如何在ASP Net Ajax PageMethods中同步调用并检索结果 目前我正在做以下事情async调用并处理数据 function checkName name PageMethods IsAvailable name onSucc
  • 发送带有返回路径的电子邮件不起作用

    我在用System Net Mail电子邮件 在代码中 我设置电子邮件的返回路径如下 string sReturnPath ConfigurationManager AppSettings ReturnPath ToString if sR
  • event 是一个全局变量,可以在回调链中的任何地方访问吗?

    我只是用 DOM 和 Javascript 来玩弄事件监听器 并注意到了这一点 function chained msg console log msg event function onClick chained the body was
  • 即使没有网络可用,如何保存 WebView 内容以供显示?

    我正在创建一个应用程序并使用 WebView 来打开 URL 我看到一些应用程序向用户提供 保存页面 网页 选项 我想知道如何从 WebView 保存页面 以便我可以在用户请求时将其显示给用户 也许使用缓存是最好的方法 为此你应该检查htt