如何监听 Android Webview 中的任何 cookie 更改

pyu*_*s13 6 android android-webview

我的应用程序使用 webview 打开一个网页,该网页正在更新网页上进行的某些交互的一些 cookie。现在我想读取该 cookie 并根据 cookie 的值进行一些 UI 调整。

iOs 有一些观察者的实现,可以附加到 cookie 列表并获取任何 cookie 更改发生的通知。

我长期以来一直在搜索类似的解决方案,但找不到任何类型的侦听器或可以附加到 cookie 并了解它们何时更新的东西。

我阅读了所有内容CookieManagerCookieSyncManger

https://developer.android.com/reference/java/net/CookieManager.html

https://developer.android.com/reference/java/net/CookieManager.html

但没有什么帮助。

我知道使用 javascript 接口挂钩是一个更好的解决方案,但目前无法实现,因为该网站已经在生产环境中运行。

Mar*_*ark 2

我相信你需要再深入一层。A CookieStore- https://developer.android.com/reference/java/net/CookieStore.html就是您要寻找的。您可以创建自己的实现来覆盖 add()、get()、remove() 等,并在其中包含您自己的回调。

这里有一篇文章介绍了如何使用共享首选项支持的实现来做到这一点 - How do I persist cookies while using HTTPUrlConnection? ,但您可以自行滚动并根据需要返回它。(是的,它仍然与 Retrofit - Retrofit 和持久 cookie 存储相关)

抱歉,相同的类名,不同的包 - android.webkit.CookieManager 不是 java.net.CookieManager。我查看了android.webkit.CookieManagerandroid.webkit.WebViewFactory的相关代码。

CookieManager 由 WebViewFactoryProvider 实例提供。如果没有一些严重的黑客攻击,似乎不可能做你想做的事。

我还检查了Crosswalk,它有一个XwalkCookieManager。这可能对你有用,但我没有尝试过,而且它会大大增加你的 APK 大小。