Dwukierunkowa synchronizacja plików cookie między HttpURLConnection (java.net.CookieManager) a WebView (android.webkit.CookieManager)
Niestety, istnieje wiele menedżerów plików cookie dla Androida. Pliki cookie dlaHttpURLConnection
są utrzymywane przezjava.net.CookieManager
i pliki cookie dlaWebView
są utrzymywane przezandroid.webkit.CookieManager
. Te repozytoria plików cookie są oddzielne i wymagają ręcznej synchronizacji.
Moja aplikacja korzysta z obuHttpURLConnections
i pokazujeWebViews
(to hybryda natywnego HTML). Oczywiście chcę, aby oba pliki udostępniały wszystkie pliki cookie - więc będę miał przejrzystą sesję w całej sieci.
Dokładniej:
Gdy plik cookie jest ustawiany / zmieniany w HttpURLConnection, chcę, aby WebView zobaczył również tę zmianę.Gdy plik cookie jest ustawiany / zmieniany w WebView, chcę, aby następne HttpURLConnections również zobaczyły tę zmianę.Po prostu - szukam synchronizacji dwukierunkowej. Lub nawet lepiej, aby oba używały tego samego repozytorium plików cookie. Możesz założyć, że oba są aktywne w tym samym czasie (jak na różnych kartach).
Pytania:
Czy istnieje sposób na wykorzystanie obu repozytoriów plików cookie?
Jeśli nie, jaka jest zalecana praktyka, aby wykonać synchronizację ręczną? Kiedy dokładnie mam synchronizować i jak?
Podobne pytanie: Topytanie rozwiązuje podobny problem, ale implementuje tylko jednokierunkową synchronizację (HttpURLConnection -> WebView).
My Best Idea Dotychczas: Naprawdę chcę uniknąć ręcznej synchronizacji, więc spróbowałem zastanowić się, jak sprawić, by oba używały tego samego repozytorium. Może uda mi się stworzyć własny podstawowy program obsługi, który się rozszerzajava.net.CookieManager
. Ustawię go jako podstawowy program obsługi plików cookiejava.net.CookieHandler.setDefault()
. Jego implementacja będzie proxy dlaandroid.webkit.CookieManager
instancja obsługi (dla każdej funkcji po prostu uzyskuję dostęp do menedżera webkit).