Как отключить обнаружение портала? Как убрать восклицательный знак на Wi-Fi или значок сигнала в Lollipop?

При подключении к Интернету система проверяет, не находится ли он в огороженном саду, который просто пытается подключиться к Google. В случае сбоя в Android 5 на значке WiFi или значке сигнала будет восклицательный знак.

В некоторых ситуациях это раздражает. Скажем, в Китае гугл заблокирован, всегда будет восклицательный знак, что бессмысленно.

Как я могу отключить эту проверку и заставить систему предположить, что подключенный Wi-Fi/мобильный интернет подключен к Интернету?

Ответы (3)

Это просто. В терминале (требуется root) или в adb shell(не требует root) введите команду

settings put global captive_portal_detection_enabled 0

и перезагрузиться. Он должен быть отключен. Существующее состояние также можно проверить с помощью команды

settings get global captive_portal_detection_enabled

Ответ «null» указывает на то, что значение глобального ключа не было установлено, и Android вернется к стандартному состоянию, когда он включен и выполняет обнаружение. Если обнаружение отключено, будет получен ответ «0».

Дополнительная информация: Android: как удалить обнаружение «захватывающего портала» на Android 4.2.2 и 4.3.

Он также работает в 5.

Большой! Отмечу, что ссылка описывает это в 4.2.2 и 4.3. Вы (или кто-либо еще) проверили, что это также работает в 5.0.x?
@SimonW да, это работает. Вот почему я пометил вопрос леденец. Но я использую CyanogenMod 12.
Комментарий Gery , которому не хватает репутации: для тех, кто использует терминал в первый раз, не забудьте поставить команду «su», прежде чем что-либо делать, чтобы разрешить права суперпользователя. (Мне потребовалось некоторое время, чтобы понять, почему я получаю «отказано в доступе»). После этого это сработало как шарм.
Начиная с Nougat (думаю, может быть только 7.1.2 или уже Marshmallow), settings put global captive_portal_mode 0вместо этого используйте jira.lineageos.org/browse/REGRESSION-620 .
Чтобы записать этот параметр, вам может потребоваться (Android >= 8?) сначала установить для SELinux разрешающий режим: su; setenforce 0; setting put ....
Это работает с Android 10? Я не хочу рисковать своим устройством

В предварительной версии Android M Developer Preview для Shamu (Nexus 6) и, возможно, других сборках этой ОС captive_portal_server globalиспользуется ОС независимо от состояния captive_portal_detection_enabledдля определения работоспособности сети Wi-Fi.

Для сетей Wi-Fi он не только отобразит восклицательный знак на значке силы, но и занесет этот SSID в черный список от автоматического повторного подключения, если он не будет успешно curlиспользовать URL-адрес, указанный в этом captive_portal_server globalSSID. Ручное повторное подключение разрешено, но останется подключенным только в том случае, если вы captive_portal_detection_enabledвыбрали «Использовать эту сеть как есть» вручную каждый раз, когда вы подключаетесь к этому WiFi SSID. Это переопределение является временным.

Для сетей мобильных провайдеров captive_portal_serverсимвол используется только для рисования восклицательного знака на значке силы, но соединение остается, и трафик будет течь, если соединение работает.

На вашем корневом устройстве решение состоит в том, чтобы снова включить captive_portal_detection_enabled, если вы его отключили, подключитесь к этой сети Wi-Fi, выберите «Использовать эту сеть как есть» в раскрывающемся меню во всплывающем окне авторизованного портала, отключите свою мобильную сеть. данные, чтобы сосредоточиться на определении веб-сайта, который можно получить через вашу сеть Wi-Fi, войдя в свой авторизованный портал, а затем используя браузер, чтобы найти тот, который работает. После этого вы можете отключить captive_portal_detection_enabled, чтобы предотвратить раздражающее всплывающее окно.

Чтобы снова включить ваш captive_portal_detection, если вы ранее отключили его, введите команду:

settings put global captive_portal_detection_enabled 1

Отключите мобильную сеть (в разделе «Настройки» — «Использование данных» — «Мобильные данные» — «Выкл.»), чтобы временно заставить телефон использовать сеть Wi-Fi для всего трафика. Это не потребуется, как только у вас будут все ваши настройки там, где они должны быть.

Android M, похоже, требует веб-сайта, который успешно загружается и не возвращает активно 204 (нет контента).

Несколько вариантов включают, но не ограничиваются

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...

Найдя тот, который работает для вашей сети Wi-Fi (часто требуется больше воображения и попыток использовать прокси-серверы корпоративных веб-шлюзов, которым не нравится HTTPS-трафик до аутентификации), вы можете сохранить сервер.

Сохраните сервер, запустив его в терминальном приложении с поддержкой root, заменив пример URL-адреса на тот, который, как вы надеетесь, будет работать:

settings put global captive_portal_server androidcheck.kiritostudio.com

Перезагрузите устройство. Попробуйте. После того, как вы довольны поведением восклицательных знаков на значках, последний шаг — отключить всплывающее окно портала, которое является одним из самых неудачных изобретений этого десятилетия.

Выдать команду:

settings put global captive_portal_detection_enabled 0

Если вы окажетесь в другой стране или в другой ситуации с Wi-Fi, где возникают проблемы, к сожалению, вам придется повторить вышеописанное с самого начала, повторно включив captive_portal_detection_enabled, перезапустив, найдя нужный сервер, а затем отключив обнаружение портала.

Вы имели в виду HTTP 204 ( нет содержимого ) или HTTP 404 (не найдено)? В настоящее время я перешел на «без содержания» на основе другого ответа.
Это решило проблему «подключен, нет интернета» на Nougat. Запуск свежепрошитой CM14.1 (7.1.2) на Nexus.

Вы можете настроить адрес сервера портала авторизации на него.

settings put global captive_portal_server g.cn

Затем перезагрузите телефон.

PS: Перед этим вы можете проверить доступность сервера.

http://g.cn/generate_204