问题描述

使用Android设备,已经连接过的WIFI不会自动重连,且显示已保存

问题分析

显示已保存说明连接的WIFI信息已经保存,Android 11连接的WIFI信息保存在该文件/data/misc/apexdata/com.android/wifi/WifiConfigStore.xml,查看发现不能自动重连的WIFI会有NETWORK_SELECTION_PERMANENTLY_DISABLED此项配置,正常的为NETWORK_SELECTION_ENABLED

<string name="SelectionStatus">NETWORK_SELECTION_PERMANENTLY_DISABLED</string>
<string name="DisableReason">NETWORK_SELECTION_DISABLED_NO_INTERNET_PERMANENT</string>

正常的:

<string name="SelectionStatus">NETWORK_SELECTION_ENABLED</string>
<string name="DisableReason">NETWORK_SELECTION_ENABLE</string>

经分析:此版本的WIFI由于没有通过校验会显示网络连接受限,导致保存连接的WiFi的信息有此配置,所以不会自动连接,只要解决显示网络连接受限的问题,即修改HTTPS校验网址可解决WIFI不自动重连的问题。

相关源码

保存的WIFI信息文件示例
frameworks/base/wifi/java/android/net/wifi/migration_samples/

WIFI信息保存路径
AOSP Path in Android 10: /data/misc/wifi/WifiConfigStore.xml
AOSP Path in Android 11: /data/misc/apexdata/com.android/wifi/WifiConfigStore.xml

自动连接机制
frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiConnectivityManager.java
网络评估:handleScanResults
是否网络选择:isNetworkSelectionNeeded
扫描结果评估:SavedNetworkEvaluator

WIFI保存
frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiConfigStore.java
关键方法:
loadFromStore()
createFile()
read()
write()
StoreData()

拓展

网上查到的关于断电时WIFI学习未来得及保存下来时,一般WIFI信息的保存是在空闲时间,一般不会立即写入flash中,也会导致不自动重连,解决方案是加个sync

frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiNative.javaprivate void  fileSync(){Runtime runtime = Runtime.getRuntime();try {runtime.exec("sync");} catch (IOException e) {e.printStackTrace();Log.e(TAG, "fileSync");
}public boolean saveConfig() {boolean ret;ret = doBooleanCommand("SAVE_CONFIG");//add fileSyncfileSync();return ret;
}

Android系统WIFI显示已保存但不会自动重连相关推荐

  1. 安卓修改wifi已停用_手机连不上wifi显示已保存怎么回事【原因介绍】

    问:为什么手机连不上wifi显示已保存?手机在连接WiFi的时候,WiFi显示已保存,手机连接不上wifi信号.请问这是什么原因引起的,应该怎么解决这个问题. 答:如果手机连接wifi时,显示已保存, ...

  2. Android Q wifi已连接但显示“已保存”无法上网

    Android Q wifi已连接但显示"已保存"无法上网 连接国内wifi之后,wifi连接界面显示已保存,但是systemUI会提示当前网络不可用,是否要保持连接的弹框. 最后 ...

  3. 路由器有一个android设备连接不上,路由器手机显示已保存连不上怎么办

    如今是网络的大时代,不管是生活还是工作中我们几乎都会接触到网络,不止是电脑,像一些别的智能设备也需要连接网络,例如手机.平板等,而网络最直接的连接方式就是使用路由器,那么你知道路由器手机显示已保存连不 ...

  4. Win10 系统WLAN 显示已关闭,图标是红叉 ,怎么办?

    Win10 系统WLAN 显示已关闭,图标是红叉 ,怎么办? 第一步:Fn+F几(根据电脑而定)快捷键开启无线 第二步:更改适配器设置中是否启用无线 还是不好使 第三步:控制面板打开服务 确认如下5个 ...

  5. Android系统默认显示电池电量百分比

    Android系统默认显示电池电量百分比 整理一下修该需求时候遇到的问题以及进行修改的思路: 需求:Android 11 让系统默认显示电池电量百分比 整理一下修该需求时候遇到的问题以及进行修改的思路 ...

  6. android系统 wifi,Android系统wifi分析-手动连接过程

    1.已保存显示时间较长 16:59:50~16:59:55 原因是,刚好系统保存热点信息里边没有该热点:没有匹配上: 07-16 16:59:51.017 1318 2154 D WifiServic ...

  7. Android小知识-了解下Android系统的显示原理

    本平台的文章更新会有延迟,大家可以关注微信公众号-顾林海,包括年底前会更新kotlin由浅入深系列教程,目前计划在微信公众号进行首发,如果大家想获取最新教程,请关注微信公众 在Android系统中应用 ...

  8. android系统平台显示驱动开发简要:LCD基本原理篇『一』

    平台信息: 内核:linux3.4.39 系统:android4.4  平台:S5P4418(cortex a9) 作者:瘋耔(欢迎转载,请注明作者) 欢迎指正错误,共同学习.共同进步!! 关注博主新 ...

  9. windows 10 系统 airpods 显示已连接但是无法播放音频

    问题描述: 1.windows 10 系统 airpods pro显示已连接但是无法播放音频 2.蓝牙和设置页面的airpods pro 只有已配对,没有已连接或则手动连接的按钮 现象图片: 归类到其 ...

最新文章

  1. oracle 监听服务自动停止与无法启动问题
  2. WEB高性能开发(10) - 疯狂的HTML压缩
  3. python_ re模块学习
  4. Jquery mobile 解决IOS9selectli闪退问题
  5. n分频器 verilog_时钟分频系列——分数分频电路的Verilog实现
  6. 学习笔记之linux网络属性配置及其命令用法
  7. 推荐两个有意思的公号
  8. excel怎么下方方格子_Excel重复值的坑,你踩过几个?
  9. linux 16.04系统下载,Ubuntu下载16.04_Ubuntu Desktop32位标准版 - 系统之家
  10. 浅谈NB-IOT模块调试
  11. android手机内存单位 吉字节,Android的尺寸单位
  12. 多多参谋:拼多多推广怎么出价?该怎么做好推广?
  13. RocketMQ消息存储学习
  14. python尼姆游戏_python实现聪明的尼姆游戏(人机对战)
  15. Airtest网易自动化测试工具
  16. unity——删除父物体下面的所有子物体
  17. android view.isshown,android View.isShown() 和 getVisibility() 的区别
  18. 收发EtherCAT帧——ecx_getindex函数
  19. 新人!发个 电力信息化可研模板*
  20. 公司发的电脑无法登录OneNote账户

热门文章

  1. Android MediaRecorder自定义分辨率
  2. HDFS分布式文件存储系统详解
  3. Linux-lrzsz命令及原理
  4. 2022年还可以学Java吗
  5. 【针对SQL 2008 R2的一点个人小结】
  6. 天天看高清播放器 开源了
  7. Redis主从复制设置
  8. 安装Newton版Swift,配合keystone认证
  9. Python学习总结----基础篇3
  10. java -双列表LinkedHashMap