2010-08-26 14 views
8

Aktualnie szukam sposobu uruchomienia domyślnej aplikacji przeglądarki na Androida i przekazania do niej pliku cookie sesji.Android: Otwórz przeglądarkę z dostarczonym ciasteczkiem sesji

Moja aplikacja komunikuje się z zewnętrznym API, nad którym nie mam kontroli za pomocą HttpClient, a następnie przekazuje użytkownika do witryny na ostatnie etapy.

Mam świadomość, że jest to prawdopodobnie możliwe przy użyciu WebView, ale bardzo potrzebuję otworzyć zewnętrzną aplikację przeglądarki zamiast korzystania z wewnętrznego WebView.

wiem, że:

Intent.ACTION_VIEW 

Może być stosowany, aby otworzyć przeglądarkę, jednak nie udało się znaleźć wiele informacji na temat faktycznie przekazując żadnych dodatkowych danych poprzez.

Każda pomoc jest doceniana.

Odpowiedz

6

Jestem obecnie szuka sposobu, aby uruchomić aplikację jako domyślną przeglądarkę na Androida i zdać sesję cookie do niego.

To nie jest możliwe, przepraszam.

+0

Czy mimo to można pobrać system lub przeglądarkę CookieStore i ręcznie dodać do tego mój plik cookie? – rblk

+0

@XenoPhoenix: Nie. Byłoby to poważne naruszenie prywatności. Nie wspominając już o tym, że użytkownik może nie używać przeglądarki, o której myślisz. – CommonsWare

+0

Szczerze mówiąc podejrzewałam tyle, dlatego liczyłam na to, że jest sposób, aby to zrobić z intencją. Chociaż, jak podejrzewałem, a Ty odpowiedziałeś, niestety nie jest to obecnie obsługiwane. – rblk

4

Czy znasz adres URL? Pomoże ci to osiągnąć twoje zapotrzebowanie. Url-write może być taki: "http: // localhost: 8080/test/error.jsp; jsessionid = C4E6732EBB4C17F409AB41143735C096".

"Jsessionid" jest kluczem do sessionid, a C4E6732EBB4C17F409AB41143735C096 jest wartością. Klucz do reprezentowania atrybutu sessionid jest różny w zależności od języka używanego w projektach internetowych.

Tak więc, jeśli chcesz zachować sesję można uruchomić domyślną takiego:

Uri uri = Uri.parse("http://localhost:8080/test/error.jsp;jsessionid=C4E6732EBB4C17F409AB41143735C096"); 
    Intent intent = new Intent(Intent.ACTION_VIEW, uri); 
    startActivity(intent); 

sessionid można uzyskać od httpclient, i po prostu dodać je za adresu URL.

Istnieje również kilka problemów, na które należy zwrócić uwagę. Najpierw w adresie URL separator to ";" nie "?", ponieważ sessionid znajduje się w nagłówku http, a nie w treści http. Po drugie, jeśli przeglądarka ma już sesję z serwerem, to przepisanie adresu URL nie zadziała, ponieważ przeglądarka skorzysta z własnej sesji, aby rozwiązać ten problem, możesz użyć tej aplikacji, aby uzyskać sesję przeglądarki i skorzystać z tej sesji w HttpClient.

+0

Dzięki za komentarz, niestety nie było to ciasteczko, które muszę przekazać, i nie miałem kontroli nad stroną, którą przekazałem użytkownikowi, aby dodać taką funkcjonalność. Jest to potencjalnie dobre rozwiązanie dla innych przypadków, jednak jako ścisła odpowiedź na pytanie, CommonsWare jest poprawne. – rblk

Powiązane problemy