[英]How to listen for any cookie changes in Android Webview
我的应用程序使用Web视图打开一个网页,该网页会更新与该网页上发生的某些交互有关的Cookie。 现在,我想读取该cookie并根据cookie的值进行一些UI调整。
iOs具有Observers的某些实现,可以将其附加到cookie列表并获取有关cookie发生更改的通知。
我一直在寻找类似的解决方案,但找不到任何类型的侦听器或可以附加到cookie并了解它们何时更新的东西。
我在CookieManager
和CookieSyncManger
阅读了所有内容
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()等,并在其中包含自己的回调。
这里有一个SO帖子,介绍了如何使用共享的首选项支持的实现来执行此操作-
使用HTTPUrlConnection时如何保留cookie?
,但是您可以自己滚动并根据需要返回。
(是的,它仍然与翻新相关-
翻新和持久性Cookie存储 )
抱歉,相同的类名,不同的包-android.webkit.CookieManager不是java.net.CookieManager。 我看了android.webkit.CookieManager和android.webkit.WebViewFactory的关联代码。
CookieManager由WebViewFactoryProvider实例提供。 如果不进行一些认真的黑客攻击,似乎就不可能做您想要的事情。
我还检查了Crosswalk ,它具有XwalkCookieManager 。 这可能对您有用,但这不是我尝试过的方法,它将大大增加您的APK大小。
作为一种解决方法,我在WebViewClient
内对onLoadResource
每次调用中onLoadResource
读取cookie,并将其与以前的值进行比较。 这比观察者模式更忙碌,但对我有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.