Android设备Wi-Fi密码的备份与恢复方法

申请号 CN201710763015.7 申请日 2017-08-30 公开(公告)号 CN107529206A 公开(公告)日 2017-12-29
申请人 四川长虹电器股份有限公司; 发明人 李超凡; 尤金刚; 车云飞; 蒲东;
摘要 本 发明 涉及Android系统的开发领域,公开了一种Android设备Wi-Fi密码的备份与恢复方法,在Wi-Fi的配置信息遭到破坏的时候自动恢复,提升Android系统的 稳定性 。本发明的方案是:在最后一次保存网络接入点配置信息之后,延迟一段时间,对wpa_supplicant.conf文件进行备份,生成wpa_supplicant.conf.bak文件;Wi-Fi模 块 启动的时候,当读取到的网络接入点配置信息为空的时候,使用备份文件wpa_supplicant.conf.bak文件去替换掉原来的已经损坏的wpa_supplicant.conf文件,然后重新加载替换后的wpa_supplicant.conf文件。本发明适用于Android设备Wi-Fi管理。
权利要求

1.Android设备Wi-Fi密码的备份与恢复方法,其特征在于,在最后一次保存网络接入点配置信息之后,延迟一段时间,对wpa_supplicant.conf文件进行备份,生成wpa_supplicant.conf.bak文件;Wi-Fi模启动的时候,当读取到的网络接入点配置信息为空的时候,使用备份文件wpa_supplicant.conf.bak文件去替换掉原来的已经损坏的wpa_supplicant.conf文件,然后重新加载替换后的wpa_supplicant.conf文件。
2.如权利要求1所示的Android设备Wi-Fi密码的备份与恢复方法,其特征在于,延迟一段时间的实现方法为:
在WifiStateMachine.java文件ConnectedState类的enter()方法中,加入Thread.sleep()语句。
3.如权利要求1所示的Android设备Wi-Fi密码的备份与恢复方法,其特征在于,对wpa_supplicant.conf文件进行备份,生成wpa_supplicant.conf.bak文件的实现方法:
在WifiStateMachine.java文件中,ConnectedState类的enter()方法中,加入WifiNative.saveConfigBak()语句。
4.如权利要求1所示的Android设备Wi-Fi密码的备份与恢复方法,其特征在于,将wpa_supplicant.conf文件上的网络配置信息备份到wpa_supplicant.conf.bak文件的实现方法为:
在ctrl_iface.c文件中,加入wpa_supplicant_ctrl_iface_save_config_bak()函数,函数中包括wpa_config_write()语句。
5.如权利要求1所示的Android设备Wi-Fi密码的备份与恢复方法,其特征在于,使用备份文件wpa_supplicant.conf.bak文件替换已经损坏的wpa_supplicant.conf文件的实现方法为:
在WifiConfigStore.java文件loadConfiguredNetworks()方法中,加入outputChannel.transferFrom(inputChannel,0,inputChannel.size())语句。

说明书全文

Android设备Wi-Fi密码的备份与恢复方法

技术领域

[0001] 本发明涉及Android系统的开发领域,特别涉及Android设备Wi-Fi密码的备份与恢复方法。

背景技术

[0002] 随着智能设备的发展,网络连接已经成为其必不可少的一个功能,Wi-Fi(无线网络)连接摆脱了连接线的束缚,连接方便,是网络连接很常用的一种方式。Android设备,是指使用 Android操作系统进行作业的智能设备。
[0003] 目前,Android设备在正常开关机的情况下,Wi-Fi的配置信息可以保持正常状态;但在连接Wi-Fi的时候或者网络接入点切换的时候突然掉电的情况下,Wi-Fi的配置信息(保存在 wpa_supplicant.conf文件中)会遭到破坏并且不会自动恢复,需要用户再次配置,影响了用户的体验。具体表现为:Android设备在连接Wi-Fi的过程中,或者网络接入点切换的过程中,突然掉电,再次开机后,Wi-Fi已保存的配置信息被破坏,Wi-Fi无法自动连接到之前所有的已经记住密码的网络接入点。

发明内容

[0004] 本发明要解决的技术问题是:提供一种Android设备Wi-Fi密码的备份与恢复方法,在 Wi-Fi的配置信息遭到破坏的时候自动恢复,提升Android系统的稳定性
[0005] 为解决上述问题,本发明采用的技术方案是:在最后一次保存网络接入点配置信息之后,延迟一段时间,对wpa_supplicant.conf文件进行备份,生成wpa_supplicant.conf.bak文件;Wi-Fi模启动的时候,当读取到的网络接入点配置信息为空的时候,使用备份文件 wpa_supplicant.conf.bak文件去替换掉原来的已经损坏的wpa_supplicant.conf文件,然后重新加载替换后的wpa_supplicant.conf文件。
[0006] 进一步的,延迟一段时间的实现方法为:在WifiStateMachine.java文件ConnectedState 类的enter()方法中,加入Thread.sleep()语句。
[0007] 进一步的对wpa_supplicant.conf文件进行备份,生成wpa_supplicant.conf.bak文件的实现方法:在WifiStateMachine.java文件中,ConnectedState类的enter()方法中,加入WifiNative.saveConfigBak()语句。
[0008] 进一步的,将wpa_supplicant.conf文件上的网络配置信息备份到 wpa_supplicant.conf.bak文件的实现方法为:在ctrl_iface.c文件中,加入 wpa_supplicant_ctrl_iface_save_config_bak()函数,函数中包括wpa_config_write()语句。
[0009] 进一步的,使用备份文件wpa_supplicant.conf.bak文件替换已经损坏的 wpa_supplicant.conf文件的实现方法为:在WifiConfigStore.java文件 loadConfiguredNetworks()方法中,加入outputChannel.transferFrom(inputChannel,
0, inputChannel.size())语句。
[0010] 本发明的有益效果是:由于本发明在最后一次保存网络接入点配置信息之后,对 wpa_supplicant.conf文件进行了备份,在Wi-Fi模块启动遇到Wi-Fi的配置信息遭到破坏的时候,可以自动恢复,优化了用户体验,提升了Android系统的稳定性附图说明
[0011] 图1是实施例的备份流程图
[0012] 图2是实施例恢复流程图。

具体实施方式

[0013]
[0014] 在实施例之前,首先介绍Android系统Wi-Fi连接的过程。Android系统对于Wi-Fi的控制主要是由系统服务WifiService来完成的,WifiService的接口通过WifiManager对应用开放。在Android设备已启动,并且Wi-Fi已开启的情况下,用户点击某个网络接入点,Android系统的处理过程如下:
[0015] 1)WifiManager.connect();
[0016] 用户点击某个网络接入点,WifiManager开始发起连接流程;
[0017] 2)WifiConfigStore.saveNetwork();
[0018] 3)WifiConfigStore.addOrUpdateNetworkNative();
[0019] 4)WifiNative.addNetwork();
[0020] 添加网络接入点;
[0021] 5)WifiNative.setNetworkVariable();
[0022] 设置网络接入点配置信息;
[0023] 6)WifiNative.enableNetwork();
[0024] 使能网络接入点;
[0025] 7)WifiNative.saveConfig();
[0026] 保存网络接入点配置信息;
[0027] 8)WifiConfigStore.enableNetworkWithoutBroadcast();
[0028] 9)WifiNative.enableNetwork();
[0029] 使能网络接入点;
[0030] 10)WifiConfigStore.selectNetwork();
[0031] 11)WifiNative.saveConfig();
[0032] 保存网络接入点配置信息;
[0033] 12)WifiNative.enableNetwork();
[0034] 使能网络接入点;
[0035] 13)WifiNative.reconnect();
[0036] 开始连接网络接入点;
[0037] 14)WifiStateMachine.sendNetworkStateChangeBroadcast();
[0038] 15)WifiStateMachine.startDhcp();
[0039] 开始运行DHCP,获取IP地址;
[0040] 16)WifiConfigStore.enableAllNetworks();
[0041] 17)WifiNative.saveConfig();
[0042] 保存网络接入点配置信息;
[0043] 18)WifiConfigStore.sendConfiguredNetworksChangedBroadcast();
[0044] 从流程中可以看出,保存网络接入点配置信息的操作被执行了3次,也就是说 wpa_supplicant.conf文件被写入了3次,在这个过程中设备掉电,wpa_supplicant.conf文件被损坏的概率很大。
[0045] 为了在wpa_supplicant.conf文件遭到损坏的情况下,恢复此文件,实施例适时地备份和恢复wpa_supplicant.conf文件,方案如下:
[0046] 1、备份方法
[0047] 如图1所示,当最后一次连接wi-fi网络成功,在最后一次保存网络接入点配置信息之后,延迟一段时间(比如10s),对wpa_supplicant.conf文件进行备份,生成wpa_supplicant.conf.bak 文件。延迟一段时间是为了避免wpa_supplicant.conf文件与wpa_supplicant.conf.bak文件在同一时刻一起被损坏。
[0048] 实施例可在WifiStateMachine.java文件中,在ConnectedState类的enter()方法中,加入 Thread.sleep()语句,用于延迟一段时间;加入WifiNative.saveConfigBak()语句,用于备份网络接入点配置信息。在WifiNative.java文件中,加入saveConfigBak()方法,用于备份网络接入点配置信息;加入reconfigure()方法,用于重新加载网络接入点配置信息。在ctrl_iface.c文件中,加入wpa_supplicant_ctrl_iface_save_config_bak()函数,函数中包括wpa_config_write()语句,用于将wpa_supplicant.conf文件上的网络配置信息备份到wpa_supplicant.conf.bak文件。
[0049] 2、恢复方法
[0050] 如图2所示,在开机时刻,Wi-Fi模块启动的时候,会自动去读取网络接入点配置信息,即wpa_supplicant.conf文件,当读取到的网络接入点配置信息为空的时候,就表明wpa_supplicant.conf文件已经损坏,这个时候,我们使用备份文件wpa_supplicant.conf.bak文件去替换掉原来的已经损坏的wpa_supplicant.conf文件,然后重新加载替换后的 wpa_supplicant.conf文件,使得网络接入点信息得以恢复。
[0051] 实施例可在WifiConfigStore.java文件中,在loadConfiguredNetworks()方法中,加入 outputChannel.transferFrom(inputChannel,0,inputChannel.size())语句,用于将 wpa_supplicant.conf.bak文件替换wpa_supplicant.conf文件;加入WifiNative.reconfigure()语句,用于重新加载网络接入点配置信息;加入loadConfiguredNetworks()语句,用于重新加载网络接入点配置信息。
[0052] 以上描述了本发明的基本原理和主要的特征,说明书的描述只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。
QQ群二维码
意见反馈