繁体   English   中英

如何在Android Webview中侦听Cookie的任何更改

[英]How to listen for any cookie changes in Android Webview

我的应用程序使用Web视图打开一个网页,该网页会更新与该网页上发生的某些交互有关的Cookie。 现在,我想读取该cookie并根据cookie的值进行一些UI调整。

iOs具有Observers的某些实现,可以将其附加到cookie列表并获取有关cookie发生更改的通知。

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

我在CookieManagerCookieSyncManger阅读了所有内容

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

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

但是没有任何帮助。

我知道使用javascript接口挂钩是一个更好的解决方案,但由于该网站已经在生产中,因此暂时无法实现。

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

\n

这里有一个SO帖子,介绍了如何使用共享的首选项支持的实现来执行此操作- 使用HTTPUrlConnection时如何保留cookie? ,但是您可以自己滚动并根据需要返回。 (是的,它仍然与翻新相关- 翻新和持久性Cookie存储

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

CookieManager由WebViewFactoryProvider实例提供。 如果不进行一些认真的黑客攻击,似乎就不可能做您想要的事情。

我还检查了Crosswalk ,它具有XwalkCookieManager 这可能对您有用,但这不是我尝试过的方法,它将大大增加您的APK大小。

作为一种解决方法,我在WebViewClient内对onLoadResource每次调用中onLoadResource读取cookie,并将其与以前的值进行比较。 这比观察者模式更忙碌,但对我有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM