1. 程式人生 > >Android8.1原生系統網路感嘆號消除

Android8.1原生系統網路感嘆號消除

原生系統Android8.1上,WiFi上出現感嘆號,此時WiFi可正常訪問。

這裡寫圖片描述

原因

這是Android 5.0引入的網路評估機制:就是當你連上網路後,會給目標產生204響應的伺服器傳送給一個請求,如果伺服器返回的是狀態碼為204的響應,那麼就被認為網路可以訪問;否則,如返回的是其他狀態碼,那麼將被視為網路訪問需要登入操作等;沒有響應的話,就被認為是網路不可訪問。這裡的情況就是,目標伺服器不能正常訪問

產生204響應的伺服器

加粗網址親測可行,其餘未測試,但可作為一個參考

修改&恢復預設

測試系統:Android 8.1預設使用https來驗證,如要使用http,需要先寫入關閉https驗證的配置,再填寫http伺服器

。然後開啟飛航模式,再開啟感嘆號即可消失。其中,xxxxx即伺服器的URL。

# 檢視所有配置
adb shell settings list global
# 使用https
adb shell settings put global captive_portal_https_url xxxxx
# 使用http
adb shell settings put global captive_portal_use_https 0
adb shell settings put global captive_portal_http_url xxxxx
# 使用預設,即刪除配置
adb shell
settings delete global captive_portal_http_url adb shell settings delete global captive_portal_https_url

禁用此功能

按照上述方法,設定captive_portal_mode的值如下:

  • 0:徹底禁用檢測
  • 1:檢測到需要登入則彈窗提醒(預設值)
  • 2:檢測到需要登入則自動斷開此熱點並不再自動連線

Android8.0相關原始碼程式碼:

這裡寫圖片描述
原始碼連結,無需梯子可直達。

參考