2010-08-26 29 views
8

目前,我正在尋找一種方式來啓動Android手機上的默認瀏覽器應用程序,並通過會話cookie將其打開瀏覽器。安卓:用提供的會話Cookie

我的應用程序超過我使用的HttpClient無法控制的外部API進行通信,然後通過用戶對網站的最後階段。

我知道這可能是可以使用的WebView,但是我很特別需要打開外部瀏覽器應用程序,而不是使用內部的WebView。

我知道:

Intent.ACTION_VIEW 

可用於打開瀏覽器,但我沒有設法找到通過實際傳遞任何額外的數據多的信息。

任何幫助,非常感謝。

回答

6

我目前正在尋找一種方法來啓動Android上的默認瀏覽器應用程序,並通過一個會話 cookie。

這是不可能的,對不起。

+0

有無論如何獲取系統或瀏覽器CookieStore並手動添加我的cookie到那? – rblk 2010-08-26 12:18:56

+0

@ XenoPhoenix:不會。這將是一個重大隱私侵犯。無論如何,更不用說用戶可能不會使用瀏覽器的事實。 – CommonsWare 2010-08-26 12:29:39

+0

老實說,我很懷疑這是爲什麼我希望有一種方式來做到這一點。雖然正如我懷疑和你回答這是不幸的是目前不支持。 – rblk 2010-08-26 12:50:41

4

你知道url-rewrite嗎?它會幫助你實現你的需求。 url-write可能如下所示: 「http:// localhost:8080/test/error.jsp; jsessionid = C4E6732EBB4C17F409AB41143735C096」。

的「JSESSIONID」是的sessionid關鍵,C4E6732EBB4C17F409AB41143735C096是值。表示sessionid屬性的關鍵字取決於Web項目中使用的語言。

所以,如果你想保持會話,你可以啓動這樣的默認:

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

的會話ID可以從HttpClient的獲得,只是其添加到您的網址後面。

也有一些需要注意的一些問題。首先,在url中,分隔符是「;」不是「?」,因爲sessionid位於http標頭中,而不是http正文。其次,如果瀏覽器已經與服務器進行了會話,那麼url-rewrite將不起作用,因爲瀏覽器將使用它自己的會話來解決這個問題,您可以使用您的應用來獲取瀏覽器的會話並使用此會話在HttpClient中。

+0

感謝您的評論,不幸的是,這不是我需要傳遞的cookie,而且我無法控制我傳遞給用戶的網站來添加這樣的功能。但對於其他情況,這可能是一個很好的解決方法,作爲對問題的嚴格回答,CommonsWare是正確的。 – rblk 2013-10-21 09:52:58