Android系统WIFI显示已保存但不会自动重连
问题描述
使用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显示已保存但不会自动重连相关推荐
- 安卓修改wifi已停用_手机连不上wifi显示已保存怎么回事【原因介绍】
问:为什么手机连不上wifi显示已保存?手机在连接WiFi的时候,WiFi显示已保存,手机连接不上wifi信号.请问这是什么原因引起的,应该怎么解决这个问题. 答:如果手机连接wifi时,显示已保存, ...
- Android Q wifi已连接但显示“已保存”无法上网
Android Q wifi已连接但显示"已保存"无法上网 连接国内wifi之后,wifi连接界面显示已保存,但是systemUI会提示当前网络不可用,是否要保持连接的弹框. 最后 ...
- 路由器有一个android设备连接不上,路由器手机显示已保存连不上怎么办
如今是网络的大时代,不管是生活还是工作中我们几乎都会接触到网络,不止是电脑,像一些别的智能设备也需要连接网络,例如手机.平板等,而网络最直接的连接方式就是使用路由器,那么你知道路由器手机显示已保存连不 ...
- Win10 系统WLAN 显示已关闭,图标是红叉 ,怎么办?
Win10 系统WLAN 显示已关闭,图标是红叉 ,怎么办? 第一步:Fn+F几(根据电脑而定)快捷键开启无线 第二步:更改适配器设置中是否启用无线 还是不好使 第三步:控制面板打开服务 确认如下5个 ...
- Android系统默认显示电池电量百分比
Android系统默认显示电池电量百分比 整理一下修该需求时候遇到的问题以及进行修改的思路: 需求:Android 11 让系统默认显示电池电量百分比 整理一下修该需求时候遇到的问题以及进行修改的思路 ...
- android系统 wifi,Android系统wifi分析-手动连接过程
1.已保存显示时间较长 16:59:50~16:59:55 原因是,刚好系统保存热点信息里边没有该热点:没有匹配上: 07-16 16:59:51.017 1318 2154 D WifiServic ...
- Android小知识-了解下Android系统的显示原理
本平台的文章更新会有延迟,大家可以关注微信公众号-顾林海,包括年底前会更新kotlin由浅入深系列教程,目前计划在微信公众号进行首发,如果大家想获取最新教程,请关注微信公众 在Android系统中应用 ...
- android系统平台显示驱动开发简要:LCD基本原理篇『一』
平台信息: 内核:linux3.4.39 系统:android4.4 平台:S5P4418(cortex a9) 作者:瘋耔(欢迎转载,请注明作者) 欢迎指正错误,共同学习.共同进步!! 关注博主新 ...
- windows 10 系统 airpods 显示已连接但是无法播放音频
问题描述: 1.windows 10 系统 airpods pro显示已连接但是无法播放音频 2.蓝牙和设置页面的airpods pro 只有已配对,没有已连接或则手动连接的按钮 现象图片: 归类到其 ...
最新文章
- oracle 监听服务自动停止与无法启动问题
- WEB高性能开发(10) - 疯狂的HTML压缩
- python_ re模块学习
- Jquery mobile 解决IOS9selectli闪退问题
- n分频器 verilog_时钟分频系列——分数分频电路的Verilog实现
- 学习笔记之linux网络属性配置及其命令用法
- 推荐两个有意思的公号
- excel怎么下方方格子_Excel重复值的坑,你踩过几个?
- linux 16.04系统下载,Ubuntu下载16.04_Ubuntu Desktop32位标准版 - 系统之家
- 浅谈NB-IOT模块调试
- android手机内存单位 吉字节,Android的尺寸单位
- 多多参谋:拼多多推广怎么出价?该怎么做好推广?
- RocketMQ消息存储学习
- python尼姆游戏_python实现聪明的尼姆游戏(人机对战)
- Airtest网易自动化测试工具
- unity——删除父物体下面的所有子物体
- android view.isshown,android View.isShown() 和 getVisibility() 的区别
- 收发EtherCAT帧——ecx_getindex函数
- 新人!发个 电力信息化可研模板*
- 公司发的电脑无法登录OneNote账户