是否能上网的状态
上网url地址的设置:
NetworkMonitor.java
makeCaptivePortalHttpsUrls
config_captive_portal_https_urls
DEFAULT_CAPTIVE_PORTAL_HTTPS_URLS
http准备监测
isCaptivePortal
sendHttpAndHttpsParallelWithFallbackProbes
httpsProbe.start();
httpProbe.start();
isConclusiveResult(httpsResult, capportApiUrl) (也不知道为啥不是http)
isCaptivePortal : isSuccessful()=(最后的日志)
因为httpsUrls和http都有,所以调用sendHttpAndHttpsParallelWithFallbackProbes
05-20 19:38:33.611 1575 2888 I NetworkMonitor: isCaptivePortal, pacUrl = null
05-20 19:38:33.612 1575 2888 I NetworkMonitor: isCaptivePortal, httpsUrls = [Ljava.net.URL;@63b8da0 httpUrls = [Ljava.net.URL;@6423d59
05-20 19:38:33.612 1575 2888 I NetworkMonitor: isCaptivePortal, httpsUrls and httpUrls, sendHttpAndHttpsParallelWithFallbackProbes
探测开始是在 ProbingState类里的
enter 方法里,isCaptivePortal调用完成后,拿到CaptivePortalProbeResult结果后,发送
CMD_PROBE_COMPLETE消息
private class ProbingState extends State {
public void enter() {
mThread = new Thread(() -> sendMessage(obtainMessage(CMD_PROBE_COMPLETE, token, 0,
isCaptivePortal(deps))));
mThread.start();
}
public boolean processMessage(Message message) {
switch (message.what) {
case CMD_PROBE_COMPLETE:
final CaptivePortalProbeResult probeResult =
(CaptivePortalProbeResult) message.obj;
if (probeResult.isSuccessful()) {
//正常会走到这儿
Log.i(TAG, "ProbingState, processMessage,
CMD_PROBE_COMPLETE, isSuccessful");
transitionTo(mEvaluatingPrivateDnsState);
} else if (probeResult.isPortal()) {
mEvaluationState.reportEvaluationResult(
NETWORK_VALIDATION_RESULT_INVALID,
probeResult.redirectUrl);
mLastPortalProbeResult = probeResult;
transitionTo(mCaptivePortalState);
}
else {
//最后匹配到这儿,就是连接不成功了
Log.i(TAG, "ProbingState, processMessage, CMD_PROBE_COMPLETE,
else NETWORK_VALIDATION_FAILED ");
mEvaluationState.reportEvaluationResult(
NETWORK_VALIDATION_RESULT_INVALID,null /* redirectUrl */);
transitionTo(mWaitingForNextProbeState);
}
}
}