2012-02-17 5 views
8

Me parece que hay muchos recursos confusos con respecto al tema del proxy en Android.Recursos de documentación confusos del proxy de Android

En primer lugar, parece que todos los métodos de la Proxy class son declarados obsoletos y se sugiere a:.

"Usar los valores Java VM de proxy estándar para encontrar el host, el puerto y lista de exclusión Este llamada ignora la lista de exclusión ".

El funcionario java vm proxy values se puede acceder de la siguiente manera:

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

Esto podría parecer confirmado por la documentación de la ProxySelector class.

Pero al probar un dispositivo real o un emulador, estos valores me parecen siempre vacíos. Después de mirar al código fuente de Android de la oculto ProxySelector activity, parece que el proxy se guarda en la configuración segura del sistema de la siguiente manera:

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

Y sólo una solicitud firmada por el proveedor del sistema operativo puede escribir a la configuración segura. Los desarrolladores pueden acceder a estos ajustes sólo en modo de lectura de la siguiente manera:

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

Alguien puede aclarar si esta es la lectura correcta de cómo se puede acceder a la configuración del proxy en Android? (Al menos parece que funciona). Si esta es la interpretación correcta, ¿por qué la documentación está tan llena de errores?

+0

Hola LeChuck Captain, usando el Samsung S2 con Android 2.3.3, los métodos que dices siempre devuelven null, pero ¿por qué? – Chris

+0

Desafortunadamente no tengo un Samsung S2 para probar lo que dijo, pero desde mi punto de vista podría depender de la personalización del ROM hecha por Samsung o el operador específico. – lechuckcaptain

+0

@LeChuckCaptain hola hombre, ¿me puede dar un correo electrónico? tengo preguntas sobre tu biblioteca de proxy. gracias por adelantado. – Sajmon

Respuesta

2

Para obtener valores proxy, debe tener acceso a las propiedades del sistema como lo ha hecho; no debería ser necesario acceder a configuraciones seguras. Si no puede usar las propiedades del sistema para leer la configuración del proxy que se realizó a través de la IU del dispositivo normal, entonces hay un problema. Los proxies son por tipo de red, por lo que APN y WiFi tendrán configuraciones de proxy separadas.

+1

Para las versiones de Android 1.X y 2.X parece funcionar solo el último ejemplo, obtener la configuración del proxy desde la base de datos de configuración de seguridad. Desde la versión 3.1, el usuario puede ingresar la configuración del proxy para cada punto de acceso Wi-Fi, pero no se proporciona (o al menos no está documentado) una forma para que los desarrolladores accedan a esta configuración.Estoy tratando de compilar [esto] (http://code.google.com/p/android-proxy-library/) biblioteca para hacerlo simple, pero mi pregunta es: ¿estoy haciendo lo correcto o lo extraño? algo en la documentación? – lechuckcaptain

+1

Ahoy, Capitán. Creo que lo que obtienes de esos métodos System.getProperty() es solo el proxy predeterminado para ese esquema. Si no recibe nada, tal vez no haya sido definido. Para obtener el proxy para una URL específica, haga algo como esto: proxyList = myProxySelector.select (httpUri); – Sparky

+0

¡Guau! Parece que funciona, al menos en Android 3.X o superior. ¡Comentario iluminador! Gracias de nuevo Sparky! Trataré de escribir algunos documentos y ejemplos adicionales, porque creo que no es muy claro para muchos otros desarrolladores cómo obtener y utilizar esta configuración. – lechuckcaptain

2

No sé si es la forma "correcta" de acceder a la configuración del proxy, pero es la única forma correcta de acceder al sistema "configuración segura".

Tal vez this también es interesante, parece que hace las cosas más fáciles, especialmente si hay proxys Wifi (¿Android admite algo como esto?). Al menos parece una gran abstracción para las diferentes versiones de Android.

+0

¡Oh, genial! En realidad es mi proyecto. Esperaba encontrar algunas respuestas de alguien que conoce el problema y la plataforma mejor que yo. ¡Espero no ser el experto principal en el problema! – lechuckcaptain

+1

Oh, parece que has ganado y tienes que investigar un poco más;) Lo siento, no tengo ni idea:/ – Luminger

Cuestiones relacionadas