2017-04-14 58 views
0

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

IOS有哪些可以为任何的cookie发生变更附加到Cookie清单,并得到通知观察员的一些执行情况。

我在搜索长类似的解决方案,但找不到任何可以连接到饼干听众什么的,了解的时候都更新。

CookieManager读到的一切和CookieSyncManger

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

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

但没有什么帮助。

我知道使用JavaScript接口挂钩是一个更好的解决方案,但不能现在实现为网站已经在生产环境中运行。

回答

1

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

这里有一个SO帖子,介绍了如何使用共享偏好支持的实现 - How do I persist cookies when using HTTPUrlConnection?,但是您可以根据自己的需要推出自己的背部背部。 (是的,它仍然是相关的改造 - Retrofit and persistent cookie store

对不起,相同的类名,不同的包 - android.webkit.CookieManager不是java.net.CookieManager。我看了一下android.webkit.CookieManager & android.webkit.WebViewFactory的关联代码。

CookieManager由WebViewFactoryProvider实例提供。没有一些严重的黑客攻击,看起来不可能做你想做的事。

我也查Crosswalk,其中有一个XwalkCookieManager。这可能适用于你,但这不是我尝试过的,它会大大增加APK的大小。

+0

我试过了,但它似乎没有与webview cookie一起使用。用于webview的CookieManager与Http请求不同,我没有办法将我的webview cookie管理器指向我自己的CookieStore。 – pyus13

+0

是的,我走到了完全相同的路径,昨天发现完全一样的东西。今天早上我开了很多,但没有运气。我不喜欢黑客,所以想要去强迫团队为我创建一个钩子。非常感谢你的帮助。 – pyus13

1

作为一种变通方法,我看在每次调用的饼干onLoadResourceWebViewClient,并将它与先前的值。 这是一个比观察者模式更忙的循环,但它适用于我。

相关问题