Una aplicación de Android puede necesitar la dirección del proxy actual sin poseer la configuración de conexión. Empieza por la interfaz de proxy de red en lugar de buscar cualquier columna de base de datos llamada user o password.

La configuración APN de telefonía describe el acceso del operador. Sus campos de cuenta pertenecen a esa configuración. No son un almacén general de credenciales para el proxy HTTP seleccionado en Wi-Fi, en una red administrada o en una conexión privada de una aplicación.

Información necesariaConfiguración pertinente
Cuenta de acceso a datos del operadorAjustes de APN, con las restricciones de acceso de la plataforma
Proxy HTTP actual de la redConnectivityManager y ProxyInfo
Inicio de sesión que exige un proxy seleccionadoEl flujo de autenticación compatible con el cliente y la fuente de cuenta aprobada

En una versión de Android compatible, ConnectivityManager.getDefaultProxy() devuelve la información de proxy aplicable. El resultado puede estar ausente. Un ProxyInfo puede describir un extremo directo o una configuración PAC, así que inspecciona su forma antes de tratar cada resultado como un par de host y puerto.

ProxyInfo no expone un par universal de usuario y contraseña. Si el servicio elegido requiere autenticación, obtén la cuenta prevista mediante el mecanismo de credenciales compatible con la aplicación. Un desafío de proxy y un inicio de sesión del operador pueden usar identidades completamente distintas.

Esto también separa el descubrimiento del uso. Un socket nativo o un SDK con su propio transporte no se vuelve consciente del proxy solo porque la aplicación pueda leer ProxyInfo. Entrega la ruta seleccionada a un cliente que admita su protocolo y su método de autenticación.

Los ejemplos antiguos que consultan un proveedor de contenido de telefonía describen versiones y permisos concretos de Android. Son un contexto histórico útil, pero no pueden convertir una cuenta APN en la contraseña que falta para un proxy no relacionado.

Artículos relacionados