¿Cómo deshabilitar la detección de portal cautivo? ¿Cómo eliminar el signo de exclamación en Wi-Fi o el ícono de señal en Lollipop?

Cuando está conectado a Internet, el sistema verifica si está en un jardín amurallado, que simplemente está tratando de conectarse a Google. Si falla, en Android 5, habrá un signo de exclamación en el icono de WiFi o en el icono de señal.

En algunas situaciones, esto es molesto. Digamos, en China, Google está bloqueado, el signo de exclamación siempre estará allí, lo cual no tiene sentido.

¿Cómo puedo deshabilitar esta verificación y hacer que el sistema asuma que los datos móviles/WiFi conectados están conectados a Internet?

Respuestas (3)

Es simple. En la terminal (requiere root), o en adb shell(no requiere root), emita el comando

settings put global captive_portal_detection_enabled 0

y reiniciar Debería estar deshabilitado. El estado existente también se puede verificar a través del comando

settings get global captive_portal_detection_enabled

Una respuesta de "null" indica que el valor de la clave global no se ha establecido y Android volverá a la configuración predeterminada de estar activado y realizar la detección. Si la detección está deshabilitada se recibirá la respuesta de "0".

Más información: Android: Cómo eliminar la detección de "portal cautivo" en Android 4.2.2 y 4.3

También funciona en 5.

¡Estupendo! Observo que el enlace describe cómo hacer esto en 4.2.2 y 4.3. ¿Ha verificado usted (o alguien más) que esto también funciona en 5.0.x?
@SimonW sí, funciona. Es por eso que etiqueté la pregunta piruleta. Sin embargo, estoy usando CyanogenMod 12.
Comentario de Gery , sin el representante para ello: Para los que usan la terminal por primera vez, no olviden poner el comando "su" antes de hacer nada, para permitir permisos de superusuario. (Me tomó un tiempo darme cuenta de por qué me "deniegan el permiso"). Después de eso, funcionó a las mil maravillas.
A partir de Nougat (supongo, podría ser solo 7.1.2, o ya Marshmallow), use en su settings put global captive_portal_mode 0lugar, consulte jira.lineageos.org/browse/REGRESSION-620
Para escribir esta configuración, es posible que (¿Android >= 8?) primero tenga que configurar SELinux en permisivo: su; setenforce 0; setting put ....
¿Funciona esto con Android 10? No quiero arriesgarme a bloquear mi dispositivo

En Android M Developer Preview para Shamu (Nexus 6), y posiblemente en otras compilaciones de este sistema operativo, el sistema operativo captive_portal_server globalutiliza independientemente del estado captive_portal_detection_enabledpara determinar el estado de una red WiFi.

Para las redes WiFi, no solo dibujará un signo de exclamación en el ícono de fuerza, sino que incluirá en la lista negra ese SSID para que no se vuelva a conectar automáticamente si no logra curlla URL especificada en el a captive_portal_server globaltravés de ese SSID. Se permite la reconexión manual, pero solo permanecerá conectado si tiene captive_portal_detection_enabledy elige "Usar esta red tal cual" manualmente, cada vez que se conecta a ese WiFi SSID. Esta anulación es temporal.

Para las redes de proveedores móviles, captive_portal_serversolo se usa para dibujar un signo de exclamación en el ícono de intensidad, pero permanecerá conectado y el tráfico fluirá si la conexión es funcional.

En su dispositivo rooteado, la solución es volver a habilitarlo captive_portal_detection_enabledsi lo ha deshabilitado, conéctese a esa red WiFi, seleccione "Usar esta red tal cual" en el menú desplegable en la ventana emergente del portal cautivo, deshabilite su red móvil datos para enfocarse en determinar un sitio web que se pueda recuperar a través de su red Wi-Fi iniciando sesión en su portal cautivo y luego use un navegador para encontrar uno que funcione. Después de eso, puede deshabilitar captive_portal_detection_enabledpara evitar la molesta ventana emergente.

Para volver a habilitar su captive_portal_detection, si lo deshabilitó anteriormente, emita el comando:

settings put global captive_portal_detection_enabled 1

Deshabilite su red móvil (en Configuración - Uso de datos - Datos móviles - Desactivado), para obligar al teléfono a usar la red WiFi para todo el tráfico, temporalmente. Esto no será necesario una vez que tenga todas sus configuraciones donde deben estar.

Android M parece requerir un sitio web que se carga correctamente y no devuelve activamente un 204 (sin contenido).

Un par de opciones incluyen pero no se limitan a

androidcheck.kiritostudio.com
captive.apple.com
www.textise.net
the network router
localhost
127.0.0.1 (if you have an onboard simple HTTP server)
and the list goes on...

Después de encontrar uno que funcione para su red WiFi (a menudo requiere más imaginación e intentos detrás de los proxies de puerta de enlace web corporativos a los que no les gusta el tráfico HTTPS antes de la autenticación), puede guardar el servidor.

Guarde el servidor ejecutando esto en su aplicación de terminal habilitada para root, reemplazando la URL de ejemplo con la que espera que funcione:

settings put global captive_portal_server androidcheck.kiritostudio.com

Reinicie su dispositivo. Pruébalo. Una vez que esté satisfecho con el comportamiento de los signos de exclamación en los íconos, el último paso es deshabilitar la ventana emergente del portal cautivo, que es uno de los inventos más desafortunados de esta década.

Emitir comando:

settings put global captive_portal_detection_enabled 0

Si se encuentra en un país diferente o en una situación de WiFi donde surgen problemas, lamentablemente deberá repetir lo anterior desde el principio, volver a habilitar captive_portal_detection_enabled, reiniciar, encontrar el servidor correcto y luego deshabilitar la detección del portal.

¿Quiso decir HTTP 204 ( sin contenido ) o HTTP 404 (no encontrado)? Actualmente cambié a "sin contenido" basado en otra respuesta
Esto resolvió el problema de "conectado, sin Internet" en Nougat. Ejecutando CM14.1 (7.1.2) recién actualizado en Nexus.

Puede configurar la dirección de su servidor de portal cautivo.

settings put global captive_portal_server g.cn

Luego, reinicie su teléfono.

PD: antes de eso, puede validar que el servidor está disponible.

http://g.cn/generar_204