Sfortunatamente, c'è una moltitudine di gestori di cookie per Android. I cookie per HttpURLConnection
vengono gestiti da java.net.CookieManager
ei cookie per WebView
vengono gestiti da android.webkit.CookieManager
. Questi repository di cookie sono separati e richiedono la sincronizzazione manuale.Sincronizzazione bidirezionale per i cookie tra HttpURLConnection (java.net.CookieManager) e WebView (android.webkit.CookieManager)
La mia app utilizza sia HttpURLConnections
sia mostra WebViews
(è un ibrido HTML nativo). Naturalmente, voglio entrambi condividere tutti i cookie, quindi avrò una sessione trasparente.
Più in particolare:
- Quando un cookie viene impostato/cambiato in un HttpURLConnection, voglio il WebViews di vedere questo cambiamento pure.
- Quando un cookie viene impostato/modificato in una WebView, desidero che le prossime HttpURLConnections visualizzino anche questa modifica.
In poche parole: sto cercando una sincronizzazione a due vie. O ancora meglio, per far sì che entrambi usino lo stesso repository di cookie. Puoi supporre che entrambi siano attivi nello stesso tempo (come nelle diverse schede).
Domande:
C'è un modo per rendere entrambi utilizzano lo stesso repository biscotto?
In caso contrario, qual è la pratica consigliata per eseguire la sincronizzazione manuale? Quando esattamente dovrei sincronizzare e come?
questione connessa: Questo question affronta un problema simile, ma implementa solo a senso unico di sincronizzazione (HttpURLConnection -> WebView).
My Best Idea So Far: Ho molta voglia di evitare una sincronizzazione manuale, così ho cercato di pensare a come fare entrambi utilizzano lo stesso repository. Forse posso creare il mio core handler che estende java.net.CookieManager
. Lo imposterò come gestore di cookie di base utilizzando java.net.CookieHandler.setDefault()
. La sua attuazione sarà un proxy per il android.webkit.CookieManager
istanza del gestore (per ogni funzione sarò semplicemente accedere al gestore webkit).
Ecco la mia soluzione: http://stackoverflow.com/a/27185278/968538 spero che possa aiutare ... – Christian