Android WebView: aplica la anulación del proxy antes de navegar
Usa la comprobación de funciones y la devolución de finalización de AndroidX WebKit, y ten en cuenta la anulación que comparten los WebView en un mismo proceso.
La navegación que depende de una anulación de proxy de WebView debe comenzar después de que se ejecute el receptor de finalización de la anulación. Establecerla y cargar una página de inmediato deja la operación compitiendo con una actualización asíncrona.
- Comprueba
WebViewFeature.isFeatureSupported(WebViewFeature.PROXY_OVERRIDE). La compatibilidad depende de la implementación de WebView y de la biblioteca AndroidX WebKit, así como del nivel de API de Android. Define qué ocurre cuando no está disponible; pasar directamente en silencio puede frustrar la función. - Construye el
ProxyConfigdeseado con sus reglas de proxy documentadas, la sintaxis del extremo y el comportamiento de omisión. Para la navegación permitida a sitios públicos, elige un candidato de la lista de proxies gratuitos cuyo protocolo coincida con una regla compatible con esa implementación de WebView. Una URL PAC, un URI SOCKS y un host sin más son entradas distintas. - Llama a
ProxyController.setProxyOverride()con esa configuración, un ejecutor y un receptor de finalización. Inicia la navegación dependiente desde la ruta de finalización. - Cuando termine la anulación temporal, bórrala con
clearProxyOverride()y gestiona también su finalización asíncrona.
Da a ese ciclo de vida un único responsable. El ajuste se aplica a los WebView de todo el proceso de la aplicación; cambiarlo repetidamente no puede dar salidas independientes a dos vistas simultáneas. Otros procesos y bibliotecas HTTP tienen sus propias rutas.
Esta interfaz compatible evita depender de receptores privados de cambios de proxy que varían entre versiones de Android. Selecciona el enrutamiento; las credenciales del proxy y la confianza en los certificados siguen usando sus mecanismos compatibles. Un fallo de autenticación o de TLS después de la selección debe diagnosticarse en esa etapa.