Chrome 79 错误刚刚从我的科尔多瓦应用程序中擦除了本地存储.我的用户可以通过什么方式恢复?



根据Android Police 2019年12月15日的说法,Chrome错误正在清除Cordova应用程序中的本地存储,我已经有用户报告确认。

Chrome 79的变化之一是网络数据所在的位置 存储已更新。但是,正如Chromium错误页面上的一条评论 指出,来自localStorage和WebSQL的数据——两种类型的存储 Web 应用和打包应用常用 — 未迁移 适当地。

长话短说,当设备更新到 Chrome 79、网络应用程序和 Web View 应用程序删除了部分(或全部(本地数据。虽然 数据在技术上仍然完好无损,因为 Chrome 没有删除旧数据 迁移后,现在无法访问它。

如果数据"技术上完好无损",最终用户是否有办法访问和检索它?就我而言,我的 cordova 应用程序存储日志条目和相关数据的关键对,如果它们可以检索本地存储的纯文本版本,该应用程序就有办法从中恢复。

我没有可以复制问题的测试设备,有没有人尝试过此恢复过程来尝试访问 local.storage 文件?对于最终用户来说,这是一个非常复杂、漫长的过程,但我有一些绝望的用户可能会艰难地完成它。如果有人建议更简单的方法,我会全力以赴。

很难相信数据完好无损,但"无法访问它"。

更新: 谷歌已经从Play商店中删除了chrome 79,因此您可以告诉用户删除Chrome更新并重新安装,他们将获得78,并且所有数据都将到位。

旧答案: 数据不会丢失,只是存储在不同的地方,您可以使用此代码启动应用程序的更新,将数据从旧位置复制到新位置。

https://gist.github.com/dpesch/a3fc3b7611068dd8b27bda9380ae07ac

它非常大,所以不会复制所有内容,只是重要的部分

private void _migrateUserDataToDefault() {
String appPath = getApplicationInfo().dataDir;
try {
copyRecursive(new File(appPath, "/app_webview/databases/"), new File(appPath, "/app_webview/Default/databases/"));
copyRecursive(new File(appPath, "/app_webview/Local Storage/"), new File(appPath, "/app_webview/Default/Local Storage/"));
} catch (IOException e) {
e.printStackTrace();
}
_renameOldData();
}

最新更新