logcat -s WifiMonitor wpa_supplicant WifiSettings WifiHW WifiConfigStore WifiStateMachine addOrUpdateNetworkNative
一、问题现象
第一次输入错误密码连接可以给出提示;后来不再提示。
二、问题原因
wps进程错误导致流程不能走下去:
E/WifiConfigStore( 2056): key="CTS_TEST_FIVE"WPA_PSK netId=-1 uid=1000/0
D/WifiHW ( 2056): TK--------->>>>command is IFNAME=wlan0 SET_NETWORK 1 ssid 4354535f544553545f46495645,reply is x���,reply_len is 4095
D/WifiHW ( 2056): TK-------->>>wifi_send_command,ctrl_conn is �
I/wpa_supplicant( 8966): [CTRL_IFACE]wlan0: SET_NETWORK 1 ssid 4354535f544553545f46495645
D/WifiHW ( 2056): TK-------->>>wifi_send_command,fail,reply is FAIL
E/WifiConfigStore( 2056): failed to set SSID: "CTS_TEST_FIVE"
三、修改
frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiConfigStore.java
private NetworkUpdateResult addOrUpdateNetworkNative(WifiConfiguration config, int uid) {
if (config.SSID != null && !mWifiNative.setNetworkVariable(
netId, WifiConfiguration.ssidVarName, encodeSSID(config.SSID))) {
loge("failed to set SSID: "+config.SSID + "retry");
//add by tank
mWifiNative.removeNetwork(netId);
netId = mWifiNative.addNetwork();
if (netId < 0) {
loge("TK--->>>>Failed to add a network!");
return new NetworkUpdateResult(INVALID_NETWORK_ID);
}
else
{
if (config.SSID != null && !mWifiNative.setNetworkVariable(
netId, WifiConfiguration.ssidVarName, encodeSSID(config.SSID))) {
loge("TK----->>>failed to set SSID: "+config.SSID);
break setVariables;
}
}
//end tank
//break setVariables;
}
}
也就是在执行命令:
[CTRL_IFACE]wlan0: SET_NETWORK 1 ssid 4354535f544553545f46495645
失败以后,执行删除命令;后再次执行该命令。