原因

這是Android 5.0引入的網(wǎng)絡(luò)評估機(jī)制:就是當(dāng)你連上網(wǎng)絡(luò)后,會給目標(biāo)產(chǎn)生204響應(yīng)的服務(wù)器發(fā)送給一個請求,如果服務(wù)器返回的是狀態(tài)碼為204的響應(yīng),那么就被認(rèn)為網(wǎng)絡(luò)可以訪問;否則,如返回的是其他狀態(tài)碼,那么將被視為網(wǎng)絡(luò)訪問需要登錄操作等;沒有響應(yīng)的話,就被認(rèn)為是網(wǎng)絡(luò)不可訪問。這里的情況就是,目標(biāo)服務(wù)器不能正常訪問
產(chǎn)生204響應(yīng)的服務(wù)器
加粗網(wǎng)址親測可行,其余未測試,但可作為一個參考
http://connect.rom.miui.com/generate_204
http://www.v2ex.com/generate_204
https://captive.v2ex.co/generate_204
http://www.noisyfox.cn/generate_204
http://www.google.cn/
修改&恢復(fù)默認(rèn)
測試系統(tǒng):Android 8.1。默認(rèn)使用https來驗證,如要使用http,需要先寫入關(guān)閉https驗證的配置,再填寫http服務(wù)器。然后開啟飛行模式,再打開感嘆號即可消失。其中,xxxxx即服務(wù)器的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
# 使用默認(rèn),即刪除配置
adb shell settings delete global captive_portal_http_url
adb shell settings delete global captive_portal_https_url
禁用此功能
按照上述方法,設(shè)置captive_portal_mode的值如下:
0:徹底禁用檢測
1:檢測到需要登錄則彈窗提醒(默認(rèn)值)
2:檢測到需要登錄則自動斷開此熱點(diǎn)并不再自動連接