2010-08-26 44 views
8

Tôi hiện đang tìm cách khởi chạy ứng dụng trình duyệt mặc định trên Android và chuyển cookie phiên cho nó.Android: Mở Trình duyệt với Cookie Phiên Cung cấp

Ứng dụng của tôi giao tiếp với API bên ngoài mà tôi không có quyền kiểm soát bằng HttpClient, sau đó chuyển người dùng đến trang web cho các giai đoạn cuối cùng.

Tôi biết rằng điều này có thể xảy ra khi sử dụng WebView, Tuy nhiên, tôi đặc biệt cần mở ứng dụng trình duyệt bên ngoài thay vì sử dụng một WebView nội bộ.

Tôi biết rằng:

Intent.ACTION_VIEW 

có thể được sử dụng để mở trình duyệt, tuy nhiên tôi đã không quản lý để tìm thấy nhiều thông tin về thực sự đi qua bất kỳ dữ liệu bổ sung thông qua.

Bất kỳ trợ giúp nào được đánh giá cao.

Trả lời

6

Tôi hiện đang tìm cách khởi chạy ứng dụng trình duyệt mặc định trên Android và chuyển một phiên cookie vào đó.

Điều này là không thể, xin lỗi.

+0

Có cách nào để lấy hệ thống hoặc trình duyệt CookieStore và thêm cookie của tôi theo cách thủ công vào đó không? – rblk

+0

@XenoPhoenix: Không. Đó sẽ là một vi phạm quyền riêng tư lớn. Chưa kể thực tế là người dùng có thể không sử dụng trình duyệt mà bạn đang nghĩ tới. – CommonsWare

+0

Thành thật mà nói, tôi nghi ngờ rằng đó là lý do tại sao tôi đã hy vọng có một cách để làm điều đó với một ý định. Mặc dù như tôi nghi ngờ và bạn trả lời điều này là tiếc là hiện không được hỗ trợ. – rblk

4

Bạn có biết url viết lại không? Nó sẽ giúp bạn đạt được nhu cầu của bạn. Một url-ghi có thể như thế này: "http: // localhost: 8080/test/error.jsp; jsessionid = C4E6732EBB4C17F409AB41143735C096".

"jsessionid" là khóa cho sessionid và C4E6732EBB4C17F409AB41143735C096 là giá trị. Chìa khóa để đại diện cho thuộc tính sessionid khác nhau phụ thuộc vào ngôn ngữ được sử dụng trong các dự án web.

Vì vậy, nếu bạn muốn giữ phiên giao dịch, bạn có thể khởi động mặc định như thế này:

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

các sessionid bạn có thể nhận được từ các HttpClient, và chỉ cần thêm nó đằng sau url của bạn.

Ngoài ra còn có một số vấn đề cần chú ý. Đầu tiên, trong url, dấu phân cách là ";" không phải là "?", vì sessionid nằm trong tiêu đề http, không phải là phần tử http. Thứ hai, nếu trình duyệt đã có phiên làm việc với máy chủ, thì việc ghi đè url sẽ không hoạt động vì trình duyệt sẽ sử dụng phiên riêng của nó, để giải quyết vấn đề này, bạn có thể sử dụng ứng dụng của mình để nhận phiên của trình duyệt và sử dụng phiên này trong HttpClient.

+0

Cảm ơn nhận xét, rất tiếc đây không phải là cookie mà tôi cần phải vượt qua và tôi không có quyền kiểm soát trang web mà tôi đã chuyển người dùng đến để thêm chức năng như thế này. Tuy nhiên, đây có thể là một công việc tốt cho các trường hợp khác, như một câu trả lời nghiêm ngặt cho câu hỏi, CommonsWare là chính xác. – rblk

Các vấn đề liên quan