Zwei-Wege-Synchronisierung für Cookies zwischen HttpURLConnection (java.net.CookieManager) und WebView (android.webkit.CookieManager)
Leider gibt es eine Vielzahl von Cookie-Managern für Android. Die Kekse fürHttpURLConnection
werden gepflegt vonjava.net.CookieManager
und die Kekse fürWebView
werden gepflegt vonandroid.webkit.CookieManager
. Diese Cookie-Repositorys sind separat und erfordern eine manuelle Synchronisierung.
Meine App verwendet beideHttpURLConnections
und zeigtWebViews
(Es ist ein Native-HTML-Hybrid). Natürlich möchte ich, dass beide alle Cookies teilen - damit ich eine transparente Sitzung in allen Bereichen habe.
Genauer:
Wenn ein Cookie in einer HttpURLConnection gesetzt / geändert wird, möchte ich, dass die WebViews diese Änderung ebenfalls sehen.Wenn ein Cookie in einem WebView gesetzt / geändert wird, möchte ich, dass die nächsten HttpURLConnections diese Änderung ebenfalls sehen.Einfach ausgedrückt: Ich suche nach einer bidirektionalen Synchronisierung. Oder noch besser, beide verwenden dasselbe Cookie-Repository. Sie können davon ausgehen, dass beide zur gleichen Zeit aktiv sind (wie auf verschiedenen Registerkarten).
Fragen:
Gibt es eine Möglichkeit, dass beide dasselbe Cookie-Repository verwenden?
Wenn nicht, welche Vorgehensweise wird für die manuelle Synchronisierung empfohlen? Wann genau soll ich synchronisieren und wie?
Verwandte Frage: DieseFrage Behebt ein ähnliches Problem, implementiert jedoch nur eine einseitige Synchronisierung (HttpURLConnection -> WebView).
Meine bisher beste Idee: Ich möchte wirklich eine manuelle Synchronisierung vermeiden und habe versucht zu überlegen, wie beide das gleiche Repository verwenden. Vielleicht kann ich meinen eigenen Core-Handler erstellen, der erweitert wirdjava.net.CookieManager
. Ich werde es als den Kern-Cookie-Handler festlegen, der verwendetjava.net.CookieHandler.setDefault()
. Die Implementierung wird ein Proxy für dieandroid.webkit.CookieManager
Handler-Instanz (für jede Funktion greife ich einfach auf den Webkit-Manager zu).