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文件。 |
||||||
说明书全文 | 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系统的稳定性附图说明 [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()语句,用于重新加载网络接入点配置信息。 |