Двусторонняя синхронизация файлов cookie между HttpURLConnection (java.net.CookieManager) и WebView (android.webkit.CookieManager)
К сожалению, существует множество менеджеров файлов cookie для Android. Печенье дляHttpURLConnection
поддерживаютсяjava.net.CookieManager
и печенье дляWebView
поддерживаютсяandroid.webkit.CookieManager
, Эти хранилища cookie являются отдельными и требуют ручной синхронизации.
Мое приложение использует обаHttpURLConnections
и показываетWebViews
(это гибрид нативного HTML). Естественно, я хочу, чтобы оба разделяли все файлы cookie, поэтому у меня будет прозрачный сеанс.
Более конкретно:
Когда cookie устанавливается / изменяется в HttpURLConnection, я хочу, чтобы WebView также видел это изменение.Когда cookie устанавливается / изменяется в WebView, я хочу, чтобы следующие HttpURLConnections также увидели это изменение.Проще говоря - я ищу двустороннюю синхронизацию. Или даже лучше, чтобы они оба использовали один и тот же репозиторий cookie. Можно предположить, что оба активны одновременно (как на разных вкладках).
Вопросов:
Есть ли способ заставить оба использовать один и тот же репозиторий cookie?
Если нет, то какую практику рекомендуется выполнять ручную синхронизацию? Когда именно я должен синхронизироваться и как?
Связанный вопрос: Этотвопрос решает аналогичную проблему, но реализует только одностороннюю синхронизацию (HttpURLConnection -> WebView).
Моя лучшая идея на данный момент: Я действительно хочу избежать ручной синхронизации, поэтому я попытался подумать, как заставить оба использовать один и тот же репозиторий. Может быть, я могу создать свой собственный обработчик ядра, который расширяетjava.net.CookieManager
, Я установлю его как основной обработчик файлов cookie, используяjava.net.CookieHandler.setDefault()
, Его реализация будет прокси дляandroid.webkit.CookieManager
экземпляр обработчика (для каждой функции я просто получу доступ к менеджеру webkit).