当前位置: 首页 > news >正文

android NetworkMonitor记录

是否能上网的状态

上网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);}}
}

http://www.lryc.cn/news/356037.html

相关文章:

  • OSPF优化——OSPF减少LSA更新量2
  • 【AMS】Android 8.0+ 绕开启动后台Service限制
  • 【多态】(超级详细!)
  • vue的组件化
  • spark的简单学习一
  • 【第5章】SpringBoot整合Druid
  • 力扣654. 最大二叉树
  • 基于Netty实现WebSocket客户端
  • homebrew安装mysql的一些问题
  • 产线问题排查
  • 华为WLAN实验继续-2,多个AP如何部署
  • 手把手教你写Java项目(1)——流程
  • 微信小程序post请求
  • frm一级4个1大神复习经验分享系列(二)
  • 理解磁盘分区与管理:U启、PE、DiskGenius、MBR与GUID
  • GPT-4o和GPT-4有什么区别?我们还需要付费开通GPT-4?
  • 《C++ Primer Plus》第十二章复习题和编程练习
  • 2024 年科技裁员综合清单
  • Linux系统编程学习笔记
  • vue3 excel 文件导出
  • 优雅的代码规范
  • JVM、JRE 和 JDK 的区别,及如何解决学习中可能会遇到的问题
  • 【开源】加油站管理系统 JAVA+Vue.js+SpringBoot+MySQL
  • 详解 Scala 的泛型
  • 【本周面试问题总结】
  • SaltStack
  • 【Rust日报】Rust 中的形式验证
  • vue3项目中新增修改时使用nextTick时遇到的问题
  • 算法训练 | 二叉树Part7 | 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数
  • C++面向对象程序设计 - 标准输出流