2012-02-17 36 views
8

Dường như với tôi rằng có rất nhiều tài nguyên gây nhầm lẫn về chủ đề proxy trên Android.Tài nguyên tài liệu về proxy khó hiểu của Android

Trước hết, có vẻ như tất cả các phương pháp của Proxy class được tuyên bố phản đối và nó đề nghị:.

"Sử dụng các giá trị java vm Proxy tiêu chuẩn để tìm ra máy chủ, cổng và danh sách loại trừ này cuộc gọi bỏ qua danh sách loại trừ. "

Quan chức java vm proxy values thể được truy cập theo cách sau:

System.getProperty("http.proxyHost") 
System.getProperty("http.proxyPort") 
System.getProperty("http.nonProxyHosts") 

Điều này có thể dường như xác nhận bởi các tài liệu của ProxySelector class.

Nhưng khi thử trên thiết bị thực hoặc trình mô phỏng, các giá trị này dường như luôn trống. Sau khi nhìn vào mã nguồn Android của ẩn ProxySelector activity, có vẻ như các proxy được lưu vào các thiết lập bảo mật của hệ thống theo cách sau:

Settings.Secure.putString(res, Settings.Secure.HTTP_PROXY, hostname); 

Và chỉ một ứng dụng có chữ ký của các nhà cung cấp hệ điều hành có thể viết thư cho cài đặt bảo mật. Nhà phát triển chỉ có thể truy cập các cài đặt này ở chế độ đọc theo cách sau:

Settings.Secure.getString(getApplicationContext().getContentResolver(),Settings.Secure.HTTP_PROXY); 

Ai đó có thể làm rõ liệu đây có phải là cách đọc chính xác cách truy cập cài đặt proxy vào Android không? (Ít nhất nó có vẻ hoạt động). Nếu đây là thông tin chính xác, thì tại sao tài liệu này lại đầy lỗi?

+0

Xin chào đội trưởng LeChuck, sử dụng Samsung S2 với android 2.3.3 các phương pháp mà bạn nói luôn trả về null, nhưng tại sao? – Chris

+0

Thật không may tôi không có Samsung S2 để thử những gì bạn nói, nhưng theo quan điểm của tôi, nó có thể phụ thuộc vào tùy chỉnh ROM do Samsung hoặc nhà cung cấp cụ thể thực hiện. – lechuckcaptain

+0

@LeChuckCaptain xin chào người đàn ông, bạn có thể cho tôi email không? tôi có câu hỏi về thư viện proxy của bạn. cảm ơn trước. – Sajmon

Trả lời

2

Để nhận các giá trị proxy, việc truy cập thuộc tính Hệ thống như bạn đã làm sẽ hoạt động; không cần phải truy cập các cài đặt bảo mật. Nếu bạn không thể sử dụng thuộc tính Hệ thống để đọc cài đặt proxy được thực hiện thông qua giao diện người dùng thiết bị thông thường thì có sự cố. Proxy là mỗi loại mạng, vì vậy APN và WiFi sẽ có cài đặt proxy riêng.

+1

Đối với các phiên bản Android 1.X và 2.X dường như chỉ hoạt động ví dụ cuối cùng, nhận cài đặt proxy từ cơ sở dữ liệu cài đặt bảo mật. Kể từ phiên bản 3.1 người dùng có thể nhập các thiết lập proxy cho mỗi điểm truy cập Wi-Fi, nhưng nó không được cung cấp (hoặc ít nhất nó không được ghi lại) một cách để các nhà phát triển truy cập các cài đặt này.Tôi đang cố gắng xây dựng [this] (http://code.google.com/p/android-proxy-library/) thư viện để làm cho nó đơn giản, nhưng câu hỏi của tôi là: tôi đang làm đúng hay tôi đã bỏ lỡ một cái gì đó trong tài liệu? – lechuckcaptain

+1

Ahoy, Đội trưởng. Tôi nghĩ rằng những gì bạn nhận được từ những phương thức System.getProperty() chỉ là proxy mặc định cho lược đồ đó. Nếu bạn không có gì trở lại, có lẽ một trong những đã không được xác định. Để lấy proxy cho một URL cụ thể, hãy thực hiện như sau: proxyList = myProxySelector.select (httpUri); – Sparky

+0

Thật tuyệt vời! Dường như hoạt động, ít nhất là trên Android 3.X hoặc cao hơn! Chiếu sáng bình luận! Cảm ơn bạn một lần nữa Sparky! Tôi sẽ cố gắng viết một số tài liệu và ví dụ bổ sung, bởi vì tôi nghĩ rằng nó không thực sự rõ ràng với nhiều nhà phát triển khác làm thế nào để có được và sử dụng các cài đặt này! – lechuckcaptain

2

Tôi không biết đó có phải là cách "đúng" để truy cập cài đặt proxy hay không nhưng đó là cách phù hợp và duy nhất bạn nên truy cập vào "cài đặt bảo mật" của hệ thống.

Có lẽ this cũng thú vị, có vẻ như nó giúp mọi thứ trở nên dễ dàng hơn, đặc biệt nếu có Wifi proxys (Android có hỗ trợ một cái gì đó như thế này không?). Ít nhất nó trông giống như trừu tượng tuyệt vời cho các phiên bản Android khác nhau.

+0

Oh Tuyệt vời! Thực ra đó là dự án của tôi. Tôi hy vọng sẽ tìm thấy một số câu trả lời từ một người biết vấn đề và nền tảng tốt hơn tôi. Tôi hy vọng không phải là chuyên gia hàng đầu về vấn đề này! – lechuckcaptain

+1

Ồ, có vẻ như bạn đã thắng và phải nghiên cứu thêm một chút rồi;) Tôi xin lỗi, không có đầu mối sau đó:/ – Luminger

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