我有一个应用程序,通过编程连接到一个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个字符,而错误,我会得到一个无休止的状态显示进度对话框。我真正想问的是:如何处理错误的密码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 {
}
}
}
}编辑:我目前正在做的是,我有一个Handler,它告诉我我是谁连接的。这很有用,因为我可以说,在重新连接()之后,我重新连接到旧的网络(当前的网络),而不是新的网络--因此显然密码可能是错误的(或者其他什么),因为我无法连接到新的网络。
这种方法的问题在于,首先要花费太多的时间,其次是不可靠的。我可以撒谎,并说,如果你将重新连接到你目前的网络,这是错误的密码,但实际上,它不是100%确定你不能重新连接,因为这-它也可能有其他原因。因此,我仍然在寻找一个简单的反馈/句柄,从密码是错误的,就像android api在每个android设备的wifi设置.
发布于 2017-09-14 08:33:13
我的问题是,我想处理这个案子,密码是错的。
经过一些研究,我发现这个post没有被标记出来,但它仍然对我很好。
下面是如果程序跳转(我已经测试过几次),如果存在身份验证错误->例如错误密码的情况:
int supl_error=intent.getIntExtra(WifiManager.EXTRA_SUPPLICANT_ERROR, -1);
if(supl_error==WifiManager.ERROR_AUTHENTICATING){
// DO SOMETHING
}注意:如上面链接的帖子所示,如果-大小写应该出现在BroadcastReceiver中,将意图WifiManager.SUPPLICANT_STATE_CHANGED_ACTION添加到活动类中的接收者注册。
https://stackoverflow.com/questions/45673369
复制相似问题