【问题标题】:Android Webkit CookieManager: Load Cookies from SQLite3 DatabaseAndroid Webkit CookieManager:从 SQLite3 数据库加载 Cookie
【发布时间】:2020-09-14 15:56:10
【问题描述】:

Android 应用程序的所有 WebView 共享(以及其他数据)他们存储的 cookie 集。我想分离 cookie 存储,即每个 WebView 都应该有自己的一组 cookie。

因此,我正在寻找一种方法来从 WebView 中检索所有 cookie,包括元信息(到期日期、标志等),分别保存它们并在需要时再次设置它们。 CookieManager 有一个方法 getCookie(),然而,它只返回当前有效 cookie 的值和名称,没有任何元信息(如 here 所讨论的)。

Android WebView 将 cookie 存储在磁盘上的 SQLite3 数据库中。显然,获得完整 cookie 信息的唯一方法是查看磁盘上的 cookie 存储。可以解析 SQLite3 数据库并使用CookieManagersetCookie(),但所有加密值都会丢失。所以我的想法是复制整个数据库文件并根据需要交换(即重命名)文件。

这种方法的潜在问题:

  • 同步问题:我无权访问系统可能用于访问 cookie 文件的任何锁。
  • 即使我尝试重命名文件而忽略第一个问题,也只会在应用程序启动时读取数据库。之后,所有 cookie(从磁盘读取的旧 cookie 和运行时添加的新 cookie)都保存在 RAM 中。我需要强制从磁盘重新加载,但 API 只提供另一个方向的同步,即从 RAM 到磁盘。

在哪里可以找到最初从磁盘加载 cookie 的代码? Android SDK 的CookieManager.java 是一个抽象类,我在哪里可以找到实际的实现?它可能对这个问题有宝贵的见解。

【问题讨论】:

    标签: android cookies webview android-webview


    【解决方案1】:

    供参考: Chromium 开发团队的成员confirmed,目前无法在应用程序中分离 cookie 存储。

    【讨论】:

      猜你喜欢
      • 2020-01-02
      • 2012-08-22
      • 1970-01-01
      • 2019-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-06
      相关资源
      最近更新 更多