很不幸,在Android上有许多cookie管理器。
我的应用程序同时使用
更具体地说:
1.当在HttpURLConnection中设置/更改cookie时,我希望WebViews也能看到此更改。 2.当在WebView中设置/更改cookie时,我希望下一个HttpURLConnection也能看到此更改。
简单点说-我正在寻找双向同步,甚至更好的是让它们都使用相同的cookie存储库。您可以假设两者在同一时间处于活动状态(例如在不同的选项卡中)。
问题:
HttpURLConnection
的cookie由java.net.CookieManager
维护,而WebView
的cookie由android.webkit.CookieManager
维护。这些cookie存储库是独立的,需要手动同步。我的应用程序同时使用
HttpURLConnections
和显示WebViews
(它是本地HTML混合应用程序)。自然地,我希望两者共享所有cookie-这样我就会拥有透明的会话。更具体地说:
1.当在HttpURLConnection中设置/更改cookie时,我希望WebViews也能看到此更改。 2.当在WebView中设置/更改cookie时,我希望下一个HttpURLConnection也能看到此更改。
简单点说-我正在寻找双向同步,甚至更好的是让它们都使用相同的cookie存储库。您可以假设两者在同一时间处于活动状态(例如在不同的选项卡中)。
问题:
有没有办法使它们共用同一个cookie存储库?
如果没有,那么建议如何进行手动同步?什么时候应该同步,如何同步?
相关问题:这个question也涉及类似的问题,但只实现了单向同步(HttpURLConnection -> WebView)。
我目前最好的想法:我真的不想手动同步,所以我尝试想如何让它们共用同一个存储库。也许我可以创建自己的核心处理程序,它扩展了java.net.CookieManager
。我将使用java.net.CookieHandler.setDefault()
将其设置为核心cookie处理程序。它的实现将是到android.webkit.CookieManager
处理程序实例的代理(对于每个函数,我将简单地访问webkit管理器)。