我有一个应用程序,可以通过编程方式连接到WiFi网络。我的问题是,我想处理密码错误的情况。我想在运行时检测密码是否正确。更准确地说,当连接建立时,我有一个进度对话框正在运行,因此如果密码错误,进度对话框将一直显示,并且无法跳过。另外需要注意的是:我使用以下代码处理少于8个字符的密码:
if(!m_wifiManager.enableNetwork(netId, true)) {
progressDialogConnecting.dismiss();
createInfoMessageDialog(CONST.WIFI_CON_FAILED_TITLE, CONST.WIFI_CON_FAILED_MSG_CONFAILURE);
m_wifiManager.reconnect();
return;
}
如果wifi连接的密钥少于8个字符,将触发此if-case。但如果它超过8个字符且错误,则会出现无限显示进度对话框的状态。我想要问的是:如何处理1.密码错误2.连接状态(就像Android系统向我显示烤面包“已连接到Wifi xyz”一样)?并且是否可能处理第一个问题(密码错误)?
以下是代码,用于处理连接建立事件,但未能正常工作(这只是wifirecevier,我还在活动中注册了它):
public class WifiReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (action.equals(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION)) {
if (intent.getBooleanExtra(WifiManager.EXTRA_SUPPLICANT_CONNECTED, false)){
if(wrongNetworkConnected)
progressDialogConnecting.dismiss();
}
}
} else {
}
}
}
}
编辑:我目前正在做的是,我有一个处理程序告诉我我连接到了谁。这很有用,因为我可以说在重新连接(reconnect())之后,我重新连接到旧网络(当前网络),而不是新网络 - 所以显然密码可能是错误的(或其他原因),因为我无法连接到新网络。
这种方法的问题首先在于它花费太多时间,其次它也不可靠。我可以撒谎并说如果您重新连接到当前网络,则密码错误,但实际上不能百分之百确定您无法重新连接,因为这可能有其他原因。因此,我仍在寻找来自suplicant的简单反馈/处理方式,表明密码错误,就像每个Android设备的wifi设置中的android api一样...