2010-09-15 10 views
7

Ho salvato un cookie in Android. Ora voglio passarlo nel mio intento del browser. Guarda il mio codice attuale:Passa cookie al browser tramite Intent

Intent browser = new Intent("android.intent.action.VIEW", 
          Uri.parse("http://mypage.php/memberpagethatrequireacookie.php")); 
//putExtra cannot take these arguments -> browser.putExtra("org.apache.http.cookie.Cookie", cookie); 
startActivity(browser); 

Voglio che venga memorizzato temporaneamente nel mio browser in modo che la mia pagina membro venga caricata correttamente. I miei cookie sono stati creati con successo dalla richiesta HTTP e li assegno a un List<Cookie> cookie; Dimmi se devo fornire altro codice.

Qualche idea? Grazie in anticipo!

risposta

11

Il browser non ha documentato Intent extra, per non parlare di uno che consente di iniettare un cookie. E, naturalmente, l'utente potrebbe utilizzare un browser diverso.

È possibile utilizzare WebView nell'applicazione e utilizzare CookieManager per iniettare i cookie nell'ambiente WebView.

+0

Quindi è impossibile farlo con il solito browser? Quindi, l'opzione WebView è la strada da percorrere. – Curtain

+3

@ Julian Assange: Non sono a conoscenza che sia possibile con "il solito browser". E alcuni dispositivi sostituiranno quel browser. E alcuni utenti sostituiranno quel browser. Le probabilità che tutti loro abbiano concordato un protocollo non documentato di accettare i cookie tramite gli extra di 'Intent' sono piuttosto bassi. – CommonsWare

+0

Okey grazie. Un'altra domanda è apparsa, ma lo prenderò in un'altra domanda. Riguarda l'iniezione di cookie stessa, che non funziona. – Curtain

5

Ecco la risposta che utilizza android.proveder.Browser:

Ho un oggetto mappa che ho memorizzato le informazioni di intestazione voglio passare. Poi il seguente:

Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
Bundle bundle = new Bundle(); 
if(mExtraHeader!=null){ 
for(String key: mExtraHeader.keySet()){ 
    bundle.putString(key, mExtraHeader.get(key)); 
} 
} 
i.putExtra(Browser.EXTRA_HEADERS, bundle); 
startActivity(i); 

come l'altro ragazzo accennato, questo dovrebbe funzionare solo con il browser predefinito e altri browser non avrebbe Browser.EXTRA_HEADERS suppongo. Risorsa: http://gitorious.org/rowboat/packages-apps-browser/blobs/a563d09392905140893d7a017dd63721577e1953/src/com/android/browser/BrowserActivity.java

+0

Grazie, utente. :) – Curtain

0

Il codice sopra riportato funziona perfettamente per impostare le intestazioni (grazie), ma non è stato possibile impostare i cookie in questo modo. Quello che sospetto è che se il browser Web ha già i cookie memorizzati per l'URL di destinazione, sovrascriverà i cookie creati usando EXTRA_HEADERS.

+1

Hai provato a utilizzare l'intestazione "Set-Cookie:" Immagino allora? –

+0

"Set-Cookie" è un'intestazione di risposta HTTP. Stiamo parlando dell'intestazione "Cookie" richiesta HTTP. – claudius

+0

L'intestazione "Cookie" quindi ... http://en.wikipedia.org/wiki/List_of_HTTP_header_fields –

Problemi correlati