36

残念ながら、Android 用の Cookie マネージャーは多数あります。の Cookie はHttpURLConnectionによって維持されjava.net.CookieManager、 の Cookie はWebViewによって維持されandroid.webkit.CookieManagerます。これらの Cookie リポジトリは別個のものであり、手動で同期する必要があります。

私のアプリは両方HttpURLConnectionsとショーを使用していますWebViews(これはネイティブ HTML ハイブリッドです)。当然のことながら、両方ですべての Cookie を共有したいので、透過的なセッションを全体的に行います。

すなわち:

  1. HttpURLConnection で Cookie が設定/変更されると、WebViews にもこの変更が表示されるようにします。
  2. WebView で Cookie が設定/変更された場合、次の HttpURLConnections にもこの変更が表示されるようにします。

簡単に言えば、双方向の同期を探しています。または、両方が同じ Cookie リポジトリを使用するようにすることもできます。両方が同時にアクティブであると想定できます (異なるタブのように)。

質問:

  1. 両方で同じ Cookie リポジトリを使用する方法はありますか?

  2. そうでない場合、手動同期を行うために推奨される方法は何ですか? いつ、どのように同期する必要がありますか?

関連する質問:この質問は同様の問題に取り組んでいますが、一方向の同期 (HttpURLConnection -> WebView) のみを実装しています。

これまでの私の最善のアイデア:手動での同期は避けたいので、両方で同じリポジトリを使用する方法を考えてみました。拡張する独自のコア ハンドラを作成できるかもしれませんjava.net.CookieManager。を使用してコア Cookie ハンドラーとして設定しjava.net.CookieHandler.setDefault()ます。その実装は、android.webkit.CookieManagerハンドラー インスタンスへのプロキシになります (すべての関数について、Webkit マネージャーにアクセスするだけです)。

4

1 に答える 1