Android 4.0 -> 4.3(包含) - Web 视图页面之间的 Web 存储丢失

2024-03-14

我正在开发一个 Android 项目,该项目依赖于WebView浏览设备上存储的多个 HTML 页面,并在需要将输入存储到数据库时将输入提交到 Web 视图。

每个页面都包含与 jQuery 绑定到上一页/下一页的控件,每个页面包含不同类型的输入(复选框、文本字段等)。

最后一页包含一个提交按钮,该按钮使用 JSInterface 将结果保存在 SQLite DB 中。

另一个按钮(在自定义顶部导航栏中)提供相同的系统。

可以通过访问包含所有已保存输入的第一页来修改结果,jQuery 系统将填充相应的输入。

有关更多详细信息,我正在使用SDK 19并针对4.4.2,但我曾经与SDK 15并针对4.2.2我没有遇到问题的地方。

如果有人需要查看在简化的系统中做了什么,请检查此JSBin http://jsbin.com/qaxoh/5/edit?html,js,output.


问题

我在用着会话存储为了存储页面之间的输入,我曾经使用 cookie,但是当有超过 150 个键/值对时它们变得不可靠。

我的问题是,在某些设备上,会话存储消失在页面之间。


测试协议

第一种情况 - 仅停留在第一页

如果我只停留在第一页,填写输入然后发送结果,一切都很好。 返回进行修改为我提供了一个完全填满的第一页。

第二种情况 - 在页面之间移动

填充第 1 页后,我转到第 2 页并填充新的输入,然后在页面之间移动以查看每个页面上的输入是否丢失。 一切都已就绪,但如果我发送结果,则仅传输当前页面输入。


Android版本测试结果

  • 3.2 - Works

  • 4.1.2 - 不起作用

  • 4.2.1 - 不起作用

  • 4.3 - 不起作用

  • 4.4.2 - Works


经过测试的解决方案

  • 覆盖网页浏览客户端's 应该覆盖Url加载返回 False 的方法 -不起作用

  • Using 本地存储而不是 SessionStorage 并没有改变什么

Insights

切换自会话存储 to 本地存储没有帮助。

我找到了一些有用的信息 http://jimbergman.net/webkit-version-in-android-version/关于 Android 使用的 WebKit 版本:

安卓3.2.1使用一个相当旧的版本,但它可以工作(v534.13)

Android版本范围从4.0 to 4.3共享相同的WebKit引擎(v534.30)

安卓4.4使用它的全新版本(v537.36),这解释了它的工作原理

虽然不是解决问题的一步,但它可以更准确地了解问题及其影响的设备。

Solution

自 SDK 16 以来,强制采用新的安全设置来阻止 Javascript 代码访问任何来源的内容。

if(Build.VERSION.SDK_INT >= 16) {
    setting.setAllowUniversalAccessFromFileURLs(true);
}

感谢ksasq为了找到这个!

[编辑 2014 年 2 月 18 日]

经过一些测试,我将问题指向了 TargetSdkVersion,BuildTarget 没有改变任何东西。

它被设置为15,WebStorage 按预期工作。

如果设置为16或更高,WebStorage 搞砸了。


在 ICS (SDK 15) 和 JellyBean (SDK 16) 之间,WebView 的安全模型及其处理来自 file:// 源的 javascript 的方式发生了一些变化。请尝试致电

WebSettings.setAllowUniversalAccessFromFileURLs(true)

确认您正在使用 file:// URL 进行工作并信任您所显示的内容。我想,由于 4.4 中 Chromium WebView 的升级,底层实现中的其他内容发生了变化,不需要这些设置。

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

Android 4.0 -> 4.3(包含) - Web 视图页面之间的 Web 存储丢失 的相关文章

  • 无法捆绑适用于 Mac 的 Java 应用程序 1.8

    我正在尝试将我的 Java 应用程序导出到 Mac 该应用程序基于编译器合规级别 1 7 我尝试了不同的方法来捆绑应用程序 1 日食 我可以用来在 Eclipse 上导出的最新 JVM 版本是 1 6 2 马文 看来Maven上也存在同样的
  • 如何从指定日期获取上周五的日期? [复制]

    这个问题在这里已经有答案了 如何找出上一个 上一个 星期五 或指定日期的任何其他日期的日期 public getDateOnDay Date date String dayName 我不会给出答案 先自己尝试一下 但是 也许这些提示可以帮助
  • 如何根据 gradle 风格设置变量

    我想传递一个变量test我为每种风格设置了不同的值作为 NDK 的定义 但出于某种原因 他总是忽略了最后味道的价值 这是 build gradle apply plugin com android library def test andr
  • 代码镜像错误:未捕获错误:扩展集中无法识别扩展值([对象对象])

    全部 我目前正在从事一个React Electron项目 该项目的目标是完成一个Markdown编辑器 当我配置codemirror 该程序报告错误说 Uncaught Error Unrecognized extension value
  • Android 套接字和 asynctask

    我即将开始制作一个应该充当 tcp 聊天客户端的应用程序 我一直在阅读和阅读 我得出的结论是最好 如果不需要 将我的套接字和异步任务中的阅读器 问题是我不确定从哪里开始 因为我是 Android 新手 这至少对我来说是一项艰巨的任务 但据我
  • 声明的包“”与预期的包不匹配

    我可以编译并运行我的代码 但 VSCode 中始终显示错误 早些时候有一个弹出窗口 我不记得是什么了 我点击了 全局应用 从那以后一直是这样 Output is there but so is the error The declared
  • 在activity_main.xml中注释

    我是安卓新手 据我所知 XML 中的注释与 HTML 中的注释相同 使用 形式 我想在 Android 项目的 Activity main xml 配置文件中写一些注释 但它给了我错误 值得注意的是 我使用的是 Eclipse 但目前 我直
  • simpleframework,将空元素反序列化为空字符串而不是 null

    我使用简单框架 http simple sourceforge net http simple sourceforge net 在一个项目中满足我的序列化 反序列化需求 但在处理空 空字符串值时它不能按预期工作 好吧 至少不是我所期望的 如
  • 对于只触及我的工作表的 Google 表格脚本,收到“此应用程序未经验证”

    我正在编写一个 Google Sheets 脚本 我只想访问与 gs 文件关联的同一电子表格中的数据 似乎我应该有权在自己的电子表格中运行脚本 但是每当我运行一个函数时 我都会得到一个This app isn t verified信息 我该
  • 在 JavaScript 循环之外声明变量可以提高速度和内存?

    C 也有类似的问题 但我们没有看到 JavaScript 的任何问题 在循环内声明变量是否可以接受 假设循环有 200 次迭代 使用样本 2 相对于样本 1 是否有性能要求 内存和速度 我们使用 jQuery 来循环 它提高了我们将 var
  • 在 Maven 依赖项中指定 jar 和 test-jar 类型

    我有一个名为 commons 的项目 其中包含运行时和测试的常见内容 在主项目中 我添加了公共资源的依赖项
  • Javascript - 水波纹效果

    我需要 JS 上的脚本 它将以 水波纹 样式更改 images html 抱歉 6MB GIF 文件 http fcuunited ru temp listening2 gif http fcunited ru temp listening
  • 将两个文本视图并排放置在布局中

    我有两个文本视图 需要在布局中并排放置 并且必须遵守两条规则 Textview2 始终需要完整显示 如果布局中没有足够的空间 则必须裁剪 Textview1 例子 文本视图1 文本视图2 Teeeeeeeeeeeeeeeeeextview1
  • JGit 检查分支是否已签出

    我正在使用 JGit 开发一个项目 我设法删除了一个分支 但我还想检查该分支是否已签出 我发现了一个变量CheckoutCommand但它是私有的 private boolean isCheckoutIndex return startCo
  • 从 FileReader 设置背景图像样式

    我正在寻找一种解决方案 允许我从文件上传输入中获取文件并通过设置 document body style backgroundImage 来预览它 以下代码用于在 Image 元素中显示预览 function setImage id tar
  • 使用 MongoDB 和 Nodejs 插入和查询日期

    我需要一些帮助在 mongodb 和 nodejs 中按日期查找记录 我将日期添加到抓取脚本中的 json 对象 如下所示 jsonObj last updated new Date 该对象被插入到 mongodb 中 我可以看到如下 la
  • 如何实现仅当可用内存较低时才将数据交换到磁盘的写缓存

    我想将应用程序生成的数据缓存在内存中 但如果内存变得稀缺 我想将数据交换到磁盘 理想情况下 我希望虚拟机通知它需要内存并将我的数据写入磁盘并以这种方式释放一些内存 但我没有看到任何方法以通知我的方式将自己挂接到虚拟机中before an O
  • 如何使用asm.js进行测试和开发?

    最近我读到asm js规范 看起来很酷 但是是否有任何环境 工具来开发和测试这个工具 这还只是处于规范阶段吗 您可以尝试使用 emscripten 和 ASM JS 1 并从侧分支在 firefox 构建中运行它 有关 asm js 的链接
  • Vue.js[vuex] 如何从突变中调度?

    我有一个要应用于 json 对象的过滤器列表 我的突变看起来像这样 const mutations setStars state payload state stars payload this dispatch filter setRev
  • 使用 xpath 和 vtd-xml 以字符串形式获取元素的子节点和文本

    这是我的 XML 的一部分

随机推荐

  • 将拉丁mysql数据转换为utf8

    我现在想使用utf 8 但我所有的数据都是latin1 转换数据的有效方法是什么 我也知道如何将数据库的结构 字符集 更改为utf8 我想做的是更改现有数据的字符集 update 这是我的旧设置 html输出 utf8 html输入 utf
  • 在 webgl 中制作 2d HUD 的推荐方法

    对于 fps 性能很重要的 webgl 游戏 制作 2D HUD 最有效的方法是什么 我可以想到 3 个选项 但我不清楚每个选项的性能成本是多少 以及哪个选项最有效 那么以下 3 个选项之间的相对性能成本是多少 答 使用正交相机以 3D 形
  • 如何在 Ionic 4/Angular7 中从 @ViewChild 获取 nativeElement?

    我正在使用 Ionic 4 的离子搜索 如下所示
  • 在 python 中使用多个输出流?

    我要做的是在 python 函数中创建多个输出流 并将它们称为1 2 3 在test py def main print gt gt fd1 words1 print gt gt fd2 words2 print gt gt fd3 wor
  • 如何检查 Mac 操作系统中是否安装了特定应用程序/软件

    我想使用 Perl Shell 脚本检查 Mac 操作系统中是否安装了特定应用程序 我正在使用 PackageMaker 编写程序包 其中我需要在安装应用程序之前检查用户计算机上的一些应用程序 因此 我计划编写一个脚本来为我检查这一点 如果
  • 关于使用 this 实现 equals 来比较 Java 中的对象

    我看到了一个关于定义的代码段equals 来自本论坛的另一个问题线程 但我的问题是以下代码的作用是什么 为什么需要它 谢谢 if obj this return true 原代码如下所示 http stackoverflow com que
  • 在哪里可以找到示例 XHTML5 源代码?

    我在哪里可以找到样品XHTML 5 页面 我主要想知道是否可以将 XHTML 5 与其他 XML 语言 如 XHTML 1 混合搭配 例如 这样的内容在 XHTML 5 中有效吗
  • Netbeans 不允许 Python 2.6 作为默认平台(强制 Jython2.5)

    我试图让 Netbeans python 使用设置为 Python 2 6 1 我的系统 python 的默认 python 平台运行 因此在 Netbeans 中我执行以下操作 工具 gt Python 平台将 Python 2 6 1
  • 为什么数组协方差被认为如此可怕?

    在 NET 中 引用类型数组是协变的 这被认为是一个错误 但是 我不明白为什么这这么糟糕 请考虑以下代码 string strings new Hey there object objects strings objects 0 new o
  • 我应该在哪里存储配置文件?

    我需要通过Win8在WinXP中读取和写入配置文件到Windows磁盘 他们最好在哪里做这件事 ProgramData 文件夹似乎不允许 procedure TfrmMain FormCreate Sender TObject var pa
  • 输入验证以确保只有数字 c++

    好的 我正在尝试擅长使用指针 因此我正在尝试为用户输入编写输入验证 以确保正确处理任何非数字的内容 当我使用 isdigit 时 它对我不起作用 当我输入字母表时 我仍然遇到异常 有什么建议么 谢谢 看一下这个 include
  • 如何隐藏 Windows Gtk 应用程序的命令提示符?

    我正在使用 MinGW 工具链在 Windows 中编译 Gtk 应用程序 但是当我运行我的应用程序时 会出现一个命令提示符窗口 怎样才能让这个提示消失呢 Check 本文 http ricardo ecn wfu edu cottrell
  • ajax 调用循环 - 访问循环计数器?

    我被困在这里 任何帮助将不胜感激 我有一个项目列表框 我想通过 AJAX 调用 Web 服务 检索列表中每个项目的数据 需要根据调用数据的行来操作检索到的数据 如果我传入 row 参数 它的值始终比行数大 1 有没有办法传入 ajax 调用
  • 使用 lapply 和 which 按特征和功能对数据帧进行子集化

    我有一个包含 5 个维度数据的数据框 如下所示 gt dim alldata 1 162 6 gt head alldata value layer Kmultiplier Resolution Season Variable 1 0 01
  • JPA GROUP BY 实体 - 这可能吗?

    是否可以在 JPA 中选择数据并按引用实体分组 我的意思是 我有两个实体 保险和参考多对一车辆 保险实体具有 validTill 字段 当然还有车辆字段 我想选择车辆及其最新的保险 下面的查询不起作用 SELECT DISTINCT v v
  • 如何在Pygame环境中绘制矩形和圆形

    我正在尝试创建一个具有各种形状的精灵的 pygame 环境 但我的代码似乎不起作用 这是我所拥有的 class Object pygame sprite Sprite def init self position color size ty
  • 在 codeigniter 中一起更新和连接查询?

    连接两个表时更新数据 但在 where 条件下出现错误 我可以在查询中同时使用连接和更新吗 这是我的代码 public function update model id array data textArea data textdata t
  • 在 C 中访问 ELF 符号表

    我正在编写一个程序来模仿elfdump ecps 目前它可以正确打印 elf 标头 程序标头和节标头 但我陷入了符号表的最后几个部分 所需的输出格式为 Symbol Table Section dynsym index value size
  • 如何显示图片并获取鼠标点击坐标[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想知道是否可以在Python Windows 中显示一些图片 然后用鼠标单击该图片并获取该单击相对于图片边缘的坐标 Thanks 是
  • Android 4.0 -> 4.3(包含) - Web 视图页面之间的 Web 存储丢失

    我正在开发一个 Android 项目 该项目依赖于WebView浏览设备上存储的多个 HTML 页面 并在需要将输入存储到数据库时将输入提交到 Web 视图 每个页面都包含与 jQuery 绑定到上一页 下一页的控件 每个页面包含不同类型的