问题描述
Android应用程序的所有WebView都会共享其存储的Cookie集合(以及其他数据)。我想分开cookie存储,即每个WebView都应该有自己的cookie集。
因此,我正在寻找一种从WebView检索所有cookie的方法,包括元信息(有效期,标志等),分别保存并在需要时再次设置。 CookieManager
具有方法getCookie()
,但是,它仅返回当前有效cookie的值和名称,而没有任何元信息(如here所述)。
Android WebView将cookie存储在磁盘上的SQLite3数据库中。显然,获取完整cookie信息的唯一方法是查看磁盘上的cookie存储。可以解析SQLite3数据库并使用CookieManager
的{{1}},但是所有加密值都将丢失。所以我的想法是复制整个数据库文件并根据需要交换(即重命名)该文件。
这种方法的潜在问题:
- 同步问题:我无权访问系统可能用于访问cookie文件的任何锁。
- 即使我忽略第一个问题而尝试重命名文件,也只会在应用程序启动时读取数据库。之后,所有cookie(从磁盘读取的旧cookie和在运行时添加的新cookie)都保留在RAM中。我需要强制从磁盘重新加载,但是API仅提供了另一个方向的同步,即从RAM到磁盘。
在哪里可以找到最初从磁盘加载cookie的代码? Android SDK的setCookie()
是抽象类,在哪里可以找到实际的实现?它可能对该问题有宝贵的见识。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)