保存网页以供离线使用并调用相同的 android

2023-11-24

我有一个 Android 应用程序要求,我需要打开保存的网页,如何做同样的事情?首先,我们如何保存一个网页及其对Android的依赖,然后在您的应用程序中打开它?任何输入都会有很大帮助!


首先我们先保存一下网络档案 from webview

private void initUI{
     webView = (WebView) findViewById(R.id.webView);
     AndroidWebClient client = new AndroidWebClient();
     webView.setWebViewClient(client);
     WebSettings webSettings = webView.getSettings();
     webSettings.setJavaScriptEnabled(true);
}
private class AndroidWebClient extends WebViewClient {
        @Override
        public void onPageStarted(WebView view, String url,
                                  android.graphics.Bitmap favicon) {                
        }
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            view.saveWebArchive(Environment.getExternalStorageDirectory()
                    + File.separator +"myArchive"+".mht");
            // our webarchive wull be available now at the above provided location with name "myArchive"+".mht"

        }
        public void onLoadResource(WebView view, String url) {

        }
      }

所有 API 中保存网络存档的方式都是相同的,但加载它的方式有所不同

对于 API 小于 Kitkat

private void loadArchive(){
     String rawData = null;
        try {
            rawData =   getStringFromFile(Environment.getExternalStorageDirectory()
                    + File.separator+"myArchive"+".mht");
        } catch (Exception e) {
            e.printStackTrace();
        }
webView.loadDataWithBaseURL(null, rawData, "application/x-webarchive-xml", "UTF-8", null);
}

  public String getStringFromFile (String filePath) throws Exception {
        File fl = new File(filePath);
        FileInputStream fin = new FileInputStream(fl);
        String ret = convertStreamToString(fin);
        //Make sure you close all streams.
        fin.close();
        return ret;
    }

    public  String convertStreamToString(InputStream is) throws Exception {
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line).append("\n");
        }
        reader.close();
        return sb.toString();
    }

Kitkat 及以上版本

private void loadArchive(){
   webView.loadUrl("file:///"+Environment.getExternalStorageDirectory()
                + File.separator+"myArchive"+".mht");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

保存网页以供离线使用并调用相同的 android 的相关文章

  • 如何清除所有WebView存储的信息?

    我有一个 Android 浏览器 我可以选择清除缓存 存储 cookie 等 代码如下所示 webView clearCache true webView clearFormData webView clearHistory webView
  • 如何对这个字符串进行子串化

    我想得到这个字符串的 4 个部分 String string 10 trillion 896 billion 45 million 56873 我需要的4个部分是 10万亿 8960亿 4500万 和 56873 我所做的是删除所有空格 然
  • 使用workmanager时Firestore脱机持久性错误

    我正在使用一个WorkManger定期从我的中检索信息Firestore当应用程序处于后台和前台时的数据库 此信息用于根据状态更新 UI 因此不同的状态会添加或删除 UI 的不同部分 第一次运行时效果很好 但是 一旦应用程序处于后台并且Wo
  • 类型容器“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
  • Sqlite数据库生命周期?关闭应用程序后它会被删除吗?

    我正在遵循一个简单的教程 该教程创建一个从 SQLiteOpenHelper 扩展的类 并创建一个包含一个表和 5 行的数据库 好的 但我需要更多地了解 android Sqlite 数据库 例如 如果应用程序关闭或手机关机会发生什么 数据
  • Android - 从资产中解析巨大(超大)JSON 文件的最佳方法

    我正在尝试从资产文件夹中解析一些巨大的 JSON 文件 我如何加载并添加到 RecyclerView 我想知道解析这种大文件 大约 6MB 的最佳方法是什么 以及您是否知道可以帮助我处理此文件的良好 API 我建议您使用GSON lib h
  • java.lang.NoClassDefFoundError:org.apache.batik.dom.svg.SVGDOMImplementation

    我在链接到我的 Android LibGDX 项目的 Apache Batik 库时遇到了奇怪的问题 但让我们从头开始 在 IntelliJ Idea 中我有一个项目 其中包含三个模块 Main Android 和 Desktop 我强调的
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • Android Studio 0.4.3 Eclipse项目没有gradle

    在此版本之前 在 Android Studio 中按原样打开 Eclipse 项目似乎很容易 无需任何转换 我更喜欢 Android Studio 环境 但我正在开发一个使用 eclipse 作为主要 IDE 的项目 我不想只为这个项目下载
  • 字符串数组文本格式化

    我有这个字符串 String text Address 1 Street nr 45 Address 2 Street nr 67 Address 3 Street nr 56 n Phone number 000000000 稍后将被使用
  • Android向menuItem添加子菜单,addSubMenu()在哪里?

    我想根据我的参数以编程方式将 OptionsMenu 内的子菜单添加到 menuItem 中 我检查了android sdk中的 MenuItem 没有addSubMenu 方法 尽管你可以找到 hasSubMenu 和 getSubMen
  • 如何根据 gradle 风格设置变量

    我想传递一个变量test我为每种风格设置了不同的值作为 NDK 的定义 但出于某种原因 他总是忽略了最后味道的价值 这是 build gradle apply plugin com android library def test andr
  • Android 套接字和 asynctask

    我即将开始制作一个应该充当 tcp 聊天客户端的应用程序 我一直在阅读和阅读 我得出的结论是最好 如果不需要 将我的套接字和异步任务中的阅读器 问题是我不确定从哪里开始 因为我是 Android 新手 这至少对我来说是一项艰巨的任务 但据我
  • android sdk 的位置尚未在 Windows 操作系统的首选项中设置

    在 Eclipse 上 我转到 windows gt Android SDK 和 AVD Manager 然后弹出此消息 Android sdk 的位置尚未在首选项中设置 进入首选项 在侧边栏找到 Android 然后会出现一个 SDK 位
  • 如何将 google+ 登录集成到我的 Android 应用程序中?

    大家好 实际上我需要通过我的应用程序从 google 登录人们 现在我阅读了 google 上的文档 其中指出 要允许用户登录 请将 Google Sign In 集成到您的应用中 初始化 GoogleApiClient 对象时 请求 PL
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview
  • 强制 Listview 不重复使用视图(复选框)

    我做了一个定制Listview 没有覆盖getView 方法 Listview 中的每个项目都具有以下布局 联系布局 xml

随机推荐

  • Heroku - 无法通过 Play Framework 应用程序设置 postgres 数据库?

    我正在尝试通过 Play Framework 应用程序在 heroku 上设置 postgres 数据库 但我不断收到有关 DATABASE URL 的错误 堆栈跟踪 gt Heroku receiving push gt Play 2 0
  • Flask 蓝图中的 render_template 使用其他蓝图的模板

    我有一个带有蓝图的 Flask 应用程序 每个蓝图都提供了一些模板 当我尝试渲染时index html第二个蓝图的模板 将渲染第一个蓝图的模板 为什么 blueprint2 会覆盖 blueprint1 的模板 如何渲染每个蓝图的模板 ap
  • Cordova Phonegap IOS 应用程序设置。捆绑可能吗?

    所以我是移动开发的新手 但我即将使用 HTML CSS JS 和 Cordova PhoneGap 3 完成我的第一个 IOS 应用程序 我试图允许用户通过 iPhone 的本机 设置 应用程序提供文本输入 灰色齿轮图标 我的应用程序将在
  • 如何更改闪存的起始地址?

    我正在使用 STM32F746ZG 和 FreeRTOS Flash的起始地址是0x08000000 但我想把它改成0x08040000 我通过谷歌搜索了这个问题 但没有找到解决方案 我更改了链接器脚本 如下所示 MEMORY RAM xr
  • 物化视图和表同名

    我有点理解物化视图并且以前曾与它们合作过 最近出现了一个问题 为什么特定报告没有显示最新数据 我调查了这个问题 显然 他们之前有一个加载了 crontab 的临时表 后来切换到了物化视图 当我使用以下查询查看数据库时 表名称已更改 SELE
  • 如何在wp7中设置可点击的文本块中的链接

    我有一个包含链接的文本框 文本中的内容是在运行时生成的 我的问题是文本内的链接不可单击 如何使文本块内的所有链接可单击 以便当我点击链接时它应该打开网络浏览器 在android中 我们可以使用自动链接来设置它 这样的选项在wp7或wp7 1
  • 如何使用动态 OR 语句构建 Linq 查询?

    以下代码 var dynamicQuery from a in context Users select a string args new string aa bb cc foreach string word in args dynam
  • 内部可变性如何影响缓存行为?

    我正在尝试创建一个struct这需要一个Path并根据需要从指定路径加载图像 这是我到目前为止所拥有的 extern crate image use std cell RefCell use std path Path use image
  • 如何在 swagger codegen 中注入自定义 spring 验证?

    我们能够使用 openApi 文档并使用 spring swagger codegen 生成 Java 输入类 此外 我们可以在为常见约束 如长度 强制等 生成输入时注入 javax validation 注释 我希望将其提升到下一个自定义
  • 用jquery查找并替换文本,只有文本没有子元素

    我想用 jquery 查找并替换文本 我想将 SKU 更改为 art nu span class sku wrapper SKU span class sku 5 144 span span I tried product meta gt
  • AWS SNS 创建超时

    我有 Lambda 函数 在调用时它会创建 SNS 主题 向其添加订阅者 然后向其发布消息 发布消息后 它会删除该主题 要创建的主题的名称和订阅者作为负载提供给 lambda 函数 有时有效 有时失败Task timed out after
  • 我可以阻止 iOS 用户更改日期和时间吗?

    我想为公司员工部署托管 iOS 设备 他们将使用的应用程序将为数据添加时间戳 这些数据将在本地记录 然后转发 我需要这些时间戳是正确的 因此我必须防止用户调整设备上的时间 记录值 然后重置日期和时间 日期和时间将配置为自动来自网络 但设备可
  • Android 推送通知未使用 webview 打开我的活动

    我按照本教程创建了一个推送通知应用程序 http www vogella com articles AndroidCloudToDeviceMessaging article html 它有效 当我收到通知时 我可以打开一个网站 但是 我可
  • 实时聊天并带有推送通知

    我正在为我的网站开发私人消息传递功能 有没有办法从服务器获取用户已收到新消息的推送通知 我知道的唯一技术是通过 ajax 不断轮询服务器以查看是否有新消息 并在需要时重新加载消息窗口 感谢您的任何反馈 UPD 到目前为止 已经确定了以下方向
  • 使用 @EmbeddedId 在复合键上通过 @GenerateValue 生成 NULL ID

    尝试通过 Spring Data JPA 在具有组合键 长整型和日期 的表中保存一行 组合键的 Long 部分是 GenerateValue 但在进行基本操作时出现以下错误save call org hibernate id Identif
  • Ruby on Rails:/bin/sh:rspec:找不到命令

    我目前正在学习 Michael Hartl 的 RoR 教程 并且在尝试运行 Spork 和 Guard 时陷入了第 3 章 当尝试运行测试时 我得到 bin sh rspec command not found 是的 我确实四处寻找答案
  • 今天 8:21 推送后,dialog/oauth API 出现错误 500

    我们的应用程序在此调用中收到错误 500 有谁知道有什么问题吗 有一个解决方法 只需将 www facebook com 替换为 m facebook com Facebook 似乎已经放弃了对旧 API KEY 的支持 如果您查看应用程序
  • 显示名称属性与显示属性

    有什么区别DisplayName属性和DisplayASP NET MVC 中的属性 DisplayName设置DisplayName在模型元数据中 例如 DisplayName foo public string MyProperty g
  • Jquery 中的鼠标事件

    基本上 我有这个带有左右箭头按钮的图像 该图像默认是我从某些 gif 中提取的第一帧 原始 gif 包含 31 帧 我的目标是当用户单击向右箭头按钮时 我想显示下一帧等等 一切都运行良好 如下面的代码所示 但是 我需要添加一些鼠标按住事件
  • 保存网页以供离线使用并调用相同的 android

    我有一个 Android 应用程序要求 我需要打开保存的网页 如何做同样的事情 首先 我们如何保存一个网页及其对Android的依赖 然后在您的应用程序中打开它 任何输入都会有很大帮助 首先我们先保存一下网络档案 from webview