2017-04-14 59 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,並將它與先前的值。 這是一個比觀察者模式更忙的循環,但它適用於我。

相關問題