Android CookieManager.setCookie 不会跨不同进程同步?

问题描述

在 Android 中,我们可以有 different process (e.g. a Service in another process)

但是,我注意到 CookieManager(来自 android.webkit.CookieManager)不会在整个过程中同步其新设置的 Cookie。

我在 MainActivity 中有一个设置 Cookie 的函数

cookieManager.setCookie(url,cookieString)
cookieManager.flush()

如果我在 MainActivity 或 MainService(同一进程中的服务)中读取它,那么我可以读取它。

val cookie = cookieManager.getCookie(url)

但是,如果我在OtherService(其他进程中的服务)中读取它,那么它可能无法获取

为了清楚地展示这一点,我创建了一个应用程序,如下所示。您可以获得code here

enter image description here

1.全新安装应用

  1. 安装新创建的应用
  2. 单击主进程服务:日志 (TrackingMe) 显示没有设置 Cookie 正确>
  3. 单击其他进程服务:日志 (TrackingMe) 显示没有设置 Cookie 正确>
  4. 点击Write Cookie将cookie写入CookieManager
  5. 点击主进程服务:Log (TrackingMe) 显示 Cookie Set Correct>
  6. 单击其他进程服务:日志 (TrackingMe) 显示没有设置 Cookie 不正确>

2.杀死应用程序并重新启动应用程序

  1. 杀死并重新启动应用程序(不要删除应用程序数据)
  2. 点击主进程服务:Log (TrackingMe) 显示 Cookie Set Correct>
  3. 单击其他进程服务:日志 (TrackingMe) 显示 Cookie Set Correct>
  4. 点击清除Cookie将所有Cookie清除到CookieManager
  5. 单击主进程服务:日志 (TrackingMe) 显示没有设置 Cookie 正确>
  6. 单击其他进程服务:日志 (TrackingMe) 显示 Cookie 设置 不正确>

发现

  • 其他进程服务不会从 CookieManager 获取更新的 cookie。应用杀掉重启后才能获取

问题:

  • 我们怎样才能让其他进程服务立即从 CookieManager 获取 Cookie? (无需重新启动应用程序?)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)