android - Android Webkit CookieManager:从 SQLite3 数据库加载 Cookie
问题描述
Android 应用程序的所有 WebView 共享(以及其他数据)他们存储的 cookie 集。我想分离cookie存储,即每个WebView都应该有自己的一组cookie。
因此,我正在寻找一种方法来从 WebView 中检索所有 cookie,包括元信息(到期日期、标志等),分别保存它们并在需要时再次设置它们。CookieManager
有一个方法getCookie()
,但是,它只返回当前有效 cookie 的值和名称,没有任何元信息(如此处所述)。
Android WebView 将 cookie 存储在磁盘上的 SQLite3 数据库中。显然,获得完整 cookie 信息的唯一方法是查看磁盘上的 cookie 存储。可以解析 SQLite3 数据库并使用CookieManager
's setCookie()
,但所有加密值都会丢失。所以我的想法是复制整个数据库文件并根据需要交换(即重命名)文件。
这种方法的潜在问题:
- 同步问题:我无权访问系统可能用于访问 cookie 文件的任何锁。
- 即使我尝试重命名文件而忽略第一个问题,数据库也只会在应用程序启动时读取。之后,所有 cookie(从磁盘读取的旧 cookie 和运行时添加的新 cookie)都保存在 RAM 中。我需要强制从磁盘重新加载,但 API 只提供另一个方向的同步,即从 RAM 到磁盘。
我在哪里可以找到最初从磁盘加载 cookie 的代码?Android SDKCookieManager.java
是一个抽象类,我在哪里可以找到实际的实现?它可能对这个问题有宝贵的见解。
解决方案
供参考:Chromium 开发团队的一名成员证实,目前无法在应用程序中分离 cookie 存储。
推荐阅读
- go - 有没有办法拦截 go 函数?
- python-behave - 运行时遇到定位元素错误
- angular - 如何在 IntelliJ 运行配置中将选项设置为 ng (Angular)?
- php - 如何使用凭据 selenium php 填充浏览器身份验证弹出窗口
- flutter - 如何在颤动中制作像滑块一样的Instagram
- node.js - 谷歌oauth, Facebook
- python - 在 Jupyter 实验室中出现 OSError:[E050] 找不到模型“en_core_web_sm”。它似乎不是 Python 包或数据目录的有效路径
- python - ARIMA 预测太阳黑子
- pandas - matplotlib:在 Python 中为选择列制作饼图
- javascript - 存储和检索用户输入