簡體   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