2010-09-15 10 views
7

He guardado una cookie en android. Ahora quiero pasarlo a la intención de mi navegador. Mire mi código actual:Pasar cookie al navegador a través de la intención

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); 

lo quiero para almacenar temporalmente en mi navegador para que mis cargas de la página miembro de éxito. Mi cookie se creo correctamente a partir de la solicitud HTTP y la asigno a un List<Cookie> cookie; Dígame si debo proporcionar más código.

¿Alguna idea? ¡Gracias por adelantado!

Respuesta

11

El navegador no tiene Intent extras documentados, mucho menos uno que le permita inyectar una cookie. Y, por supuesto, el usuario podría estar usando un navegador diferente.

Le invitamos a usar WebView en su aplicación, y puede usar el CookieManager para inyectar su cookie en el entorno WebView.

+0

Entonces, ¿es imposible hacerlo con el navegador habitual? Entonces, la opción WebView es el camino a seguir. – Curtain

+3

@Julian Assange: No estoy al tanto de que sea posible con "el navegador habitual". Y algunos dispositivos reemplazarán ese navegador. Y algunos usuarios reemplazarán ese navegador. Las probabilidades de que todas ellas hayan acordado un protocolo indocumentado para aceptar cookies a través de extras de "Intención" son bastante bajas. – CommonsWare

+0

Gracias Okey. Apareció otra pregunta, pero lo tomaré en otra pregunta. Se trata de la inyección de cookies en sí misma, eso no funciona. – Curtain

5

Aquí está la respuesta que utiliza android.proveder.Browser:

Tengo un objeto de mapa que almacena la información de cabecera Quiero pasar. A continuación, el siguiente:

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); 

Al igual que el otro tipo mencionado, esto sólo funcionaría con el navegador por defecto y otros navegadores no tendría Browser.EXTRA_HEADERS supongo. Recurso: http://gitorious.org/rowboat/packages-apps-browser/blobs/a563d09392905140893d7a017dd63721577e1953/src/com/android/browser/BrowserActivity.java

+0

Gracias, usuario. :) – Curtain

0

El código anterior funciona bien para establecer encabezados (gracias), pero no pude establecer las cookies de esa manera. Lo que sospecho es que si el navegador web ya tiene las cookies almacenadas para la URL objetivo, sobrescribirá las cookies creadas con EXTRA_HEADERS.

+1

Has intentado usar el encabezado "Set-Cookie:" ¿Me imagino entonces? –

+0

"Set-Cookie" es un encabezado de respuesta HTTP. Estamos hablando aquí del encabezado de solicitud HTTP "Cookie". – claudius

+0

El encabezado "Cookie" luego ... http://en.wikipedia.org/wiki/List_of_HTTP_header_fields –

Cuestiones relacionadas