Android - Wifimanager 处理 wifi 连接状态

Android - Wifimanager handle wifi-connection states

我有一个应用程序可以通过编程将自己连接到 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 系统向我显示敬酒 "Connected to Wifi xyz")?并且是否有可能处理第一个(密码错误)?

这是代码,它不能用于处理连接建立事件(这只是 wifirecevier,我也在 activity 中注册了它):

 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,它告诉我我与谁有联系。这很有用,因为我可以说在 reconnect() 之后我重新连接到旧网络(当前网络)而不是新网络 - 所以显然密码可能是错误的(或其他原因),因为我无法连接到新网络网络。

这种方法的问题是,一是耗时太长,二是不靠谱。我可以撒谎说,如果您将重新连接到您当前的网络,那是密码错误的错误,但实际上并不能 100% 确定您因此无法重新连接 - 也可能有其他原因。因此,我仍在从请求者那里搜索一个简单的 feedback/handle 密码错误,就像 android api 在每个 android 设备的 wifi 设置中所做的那样。 .

My problem is, I want to handle the case, that the password is wrong.

经过一些研究,我发现这个 post 没有标记为已回答,但它对我来说仍然很有效。

这里是 if-case,如果存在身份验证错误,程序会跳转(我已经测试过几次)--> 例如密码错误:

int supl_error=intent.getIntExtra(WifiManager.EXTRA_SUPPLICANT_ERROR, -1);

if(supl_error==WifiManager.ERROR_AUTHENTICATING){
          // DO SOMETHING 
}

注意: 如上文链接 post 所示,此 if-case 应出现在 BroadcastReceiver 中,将意图 WifiManager.SUPPLICANT_STATE_CHANGED_ACTION 添加到activity-class.

中的接收者注册