【发布时间】:2017-08-14 11:20:27
【问题描述】:
我有一个应用程序以编程方式将自身连接到 wifi 连接。我的问题是,我想处理密码错误的情况。我想在运行时检测密码不正确。准确地说,我在建立连接时运行了一个progressdialog,所以如果密码错误,progressdialog 只会一直显示并且不能跳过。进一步说明:我使用以下代码处理了一个少于 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() 之后我重新连接到旧网络(当前网络)而不是新网络 - 显然密码可能是错误的(或其他什么),因为我无法连接到新网络网络。
这种方法的问题是首先它需要太多时间,其次它不可靠。我可以撒谎说如果你会重新连接到你当前的网络,那是密码错误的错,但实际上并不是 100% 肯定你不能重新连接——它也可能有其他原因。所以我仍在寻找来自请求者的简单反馈/处理密码错误,就像每个android设备的wifi设置中的android api一样......
【问题讨论】:
标签: android wifi wifimanager