残念ながら、Android 用の Cookie マネージャーは多数あります。の Cookie はHttpURLConnection
によって維持されjava.net.CookieManager
、 の Cookie はWebView
によって維持されandroid.webkit.CookieManager
ます。これらの Cookie リポジトリは別個のものであり、手動で同期する必要があります。
私のアプリは両方HttpURLConnections
とショーを使用していますWebViews
(これはネイティブ HTML ハイブリッドです)。当然のことながら、両方ですべての Cookie を共有したいので、透過的なセッションを全体的に行います。
すなわち:
- HttpURLConnection で Cookie が設定/変更されると、WebViews にもこの変更が表示されるようにします。
- WebView で Cookie が設定/変更された場合、次の HttpURLConnections にもこの変更が表示されるようにします。
簡単に言えば、双方向の同期を探しています。または、両方が同じ Cookie リポジトリを使用するようにすることもできます。両方が同時にアクティブであると想定できます (異なるタブのように)。
質問:
両方で同じ Cookie リポジトリを使用する方法はありますか?
そうでない場合、手動同期を行うために推奨される方法は何ですか? いつ、どのように同期する必要がありますか?
関連する質問:この質問は同様の問題に取り組んでいますが、一方向の同期 (HttpURLConnection -> WebView) のみを実装しています。
これまでの私の最善のアイデア:手動での同期は避けたいので、両方で同じリポジトリを使用する方法を考えてみました。拡張する独自のコア ハンドラを作成できるかもしれませんjava.net.CookieManager
。を使用してコア Cookie ハンドラーとして設定しjava.net.CookieHandler.setDefault()
ます。その実装は、android.webkit.CookieManager
ハンドラー インスタンスへのプロキシになります (すべての関数について、Webkit マネージャーにアクセスするだけです)。