当前位置: 首页 > 知识库问答 >
问题:

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

卞嘉许
2023-03-14

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

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

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

我读了CookieManagerCookieSyncManger中的所有内容

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

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

但没有任何帮助。

我知道使用javascript接口钩子是一个更好的解决方案,但目前还不能实现,因为网站已经在生产中运行。

共有2个答案

于意智
2023-03-14

作为一种解决方法,每次调用onLoadResource时,我都会阅读WebViewClient中的cookie,并将其与以前的值进行比较。这与其说是观察者模式,不如说是一个繁忙的循环,但它对我来说很有效。

公西永嘉
2023-03-14

<罢工> 我相信你需要再深入一层 CookieStore- https://developer.android.com/reference/java/net/CookieStore.html就是您要找的。您可以创建自己的实现,覆盖add()、get()、删除()等。并在那里包含您自己的回调。

<罢工> 这里有一个SO帖子,介绍了如何使用共享偏好支持的实现来做到这一点- 当使用HTTPUrlConnection时,我如何坚持cookie?,但是您可以随心所欲地滚动您自己的和备份它。(是的,它仍然与改造相关- 改造和持久cookie存储)

很抱歉,相同的类名,不同的包-android。webkit。CookieManager不是java。网库克经理。我看了一下android的相关代码。webkit。厨师经理

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

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

 类似资料:
  • 我正在处理一些奇怪的遗留代码。他们有一个实现JPanel的自定义对象。这个< code>JPanel对象是主应用程序中的第二个弹出屏幕。我遇到的问题是检测辅助弹出屏幕何时关闭。 我尝试为该类实现一个,但是当我尝试添加它时,没有与此对象关联的。我假设这是因为他们正在使用一个自定义对象,它是一个嵌入式弹出屏幕。 我尝试使用以下命令检索: 这在上失败。我不知道为什么在这个页面上检测右上角的“x”关闭按钮

  • 我已经找了一段时间了,但我没有找到任何有效的东西。我希望这样做,以便每次用户单击我列表中的新客户机时,客户机的详细信息都会出现在字段中(请参见下面的屏幕截图):

  • 问题内容: 我希望能够在用户单击按钮时触发一个事件,然后将其按住1000到1500毫秒。 是否有jQuery核心功能或已经启用了此功能的插件? 我应该自己滚吗?我应该从哪里开始? 问题答案: 编辑 :每个AndyE的更正…谢谢! 编辑2 :现在为每个gnarf对具有相同处理程序的两个事件使用bind

  • 问题内容: 我做了一个时间转换器,您可以通过单击按钮来增加或减少时间。但是,我希望当我单击并按住按钮时,时间的价值将继续攀升。 因此,当前,如果您每次单击向上按钮时都看到我的Plunkr,则该值会增加,但是我希望这样做,因此当我按住按钮时,该值会增加,直到释放按钮为止。 我怎样才能实现这样的目标? 问题答案: 演示 将ng-mouseDown和ng-mouseup指令与$ interval一起使用

  • 我有一个基本回收适配器,如下所示: : 基本视图保持架为: 假设ViewHolder有两个视图,一个TextView和一个ImageView。如何对ViewHolder的itemview中的所有项目实现ClickListener

  • 我试图用我的键控制火箭动画,并尝试使用KeyListener方法,然而,我的程序对我的按键没有反应。我尝试将keylistener添加到我的JFrame,但它没有调用它,因为JFrame是一个单独的静态方法。如果你运行它,你将没有图像,但是,如果你运行,请替换为矩形。你能说出我的错误吗。提前谢了。 下面是我的代码: