【问题标题】:Android - Wifimanager handle wifi-connection statesAndroid - Wifimanager 处理 wifi 连接状态
【发布时间】: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


    【解决方案1】:

    我的问题是,我想处理密码错误的情况。

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

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

    int supl_error=intent.getIntExtra(WifiManager.EXTRA_SUPPLICANT_ERROR, -1);
    
    if(supl_error==WifiManager.ERROR_AUTHENTICATING){
              // DO SOMETHING 
    }
    

    注意:如上面的链接帖子所示,此 if-case 应出现在 BroadcastReceiver 中,将意图 WifiManager.SUPPLICANT_STATE_CHANGED_ACTION 添加到您的活动类中的接收者注册中。

    【讨论】:

    • 只是希望您的帮助,如果可能的话,我陷入了同样的境地,问题是 EXTRA_SUPPLICANT_ERROR 已被弃用。我该怎么办?
    猜你喜欢
    • 2012-05-06
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    • 1970-01-01
    相关资源
    最近更新 更多