2010-09-15 21 views
7

Zapisałem plik cookie w systemie Android. Teraz chcę przekazać to do mojej intencji przeglądarki. Spójrz na mój obecny kod:Prześlij plik cookie do przeglądarki poprzez 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); 

Chcę go tymczasowo przechowywać w przeglądarce, aby moja strona ładowała się pomyślnie. Moje ciasteczko zostało pomyślnie utworzone z żądania HTTP i przypisuję je do List<Cookie> cookie; Powiedz, czy powinienem podać więcej kodu.

Wszelkie pomysły? Z góry dziękuję!

Odpowiedz

11

Przeglądarka nie ma udokumentowanych dodatków Intent, nie mówiąc już o tym, który umożliwiłby wstrzyknięcie pliku cookie. I oczywiście użytkownik może używać innej przeglądarki.

Zapraszamy do korzystania z aplikacji WebView i możesz użyć pliku CookieManager, aby wprowadzić plik cookie do środowiska WebView.

+0

Więc nie można tego zrobić za pomocą zwykłej przeglądarki? W takim przypadku można przejść do opcji WebView. – Curtain

+3

@Julian Assange: Nie jestem świadomy, że jest to możliwe w przypadku "zwykłej przeglądarki". A niektóre urządzenia zastąpią tę przeglądarkę. I niektórzy użytkownicy zastąpią tę przeglądarkę. Szanse na to, że wszyscy zgodzili się na nieudokumentowany protokół na akceptowanie ciasteczek przez dodatki "Intent" są dość niskie. – CommonsWare

+0

Okey, dziękuję. Pojawiło się kolejne pytanie, ale powiem to w innym pytaniu. Chodzi o samo wstrzyknięcie Cookie, które nie działa. – Curtain

5

Oto odpowiedź, która używa android.proveder.Browser:

Mam obiektu Mapa, że ​​przechowywane informacje nagłówka chcę przekazać. Potem następuje:

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

Podobnie jak inny facet, o którym mowa, to będzie działać tylko z domyślnej przeglądarki i innych przeglądarek nie miałyby Browser.EXTRA_HEADERS sądzę. Zasób: http://gitorious.org/rowboat/packages-apps-browser/blobs/a563d09392905140893d7a017dd63721577e1953/src/com/android/browser/BrowserActivity.java

+0

Dzięki, użytkownik. :) – Curtain

0

Powyższy kod działa poprawnie, aby ustawić nagłówki (dzięki za to), ale nie udało mi się ustawić ciasteczek w ten sposób. Podejrzewam, że jeśli przeglądarka internetowa ma już pliki cookie zapisane dla docelowego adresu URL, nadpisze pliki cookie utworzone za pomocą EXTRA_HEADERS.

+1

Próbowałeś użyć nagłówka "Set-Cookie:", jak sobie wyobrażam? –

+0

"Set-Cookie" to nagłówek odpowiedzi HTTP. Mówimy tutaj o nagłówku "Cookie" żądania HTTP. – claudius

+0

Nagłówek "Cookie" to ... http://en.wikipedia.org/wiki/List_of_HTTP_header_fields –

Powiązane problemy