当前位置:  开发笔记 > 编程语言 > 正文

如何检测无法在android中连接wifi?

如何解决《如何检测无法在android中连接wifi?》经验,为你挑选了1个好方法。

检测连接失败的最佳方法是什么?

我知道我们应该NetworkInfo.getState()用来获取连接状态,并且我也可以使用BroadcastReceiver NETWORK_STATE_CHANGED_ACTION来检测连接状态的变化。

我认为DISCONNECTED在这种情况下,在broadcastReceiver 中检测状态不匹配。

NetworkInfo.State.DISCONNECTED 表示仅“断开连接”,并不表示连接失败。



1> Anoop M..:

向接收器注册WifiManager.SUPPLICANT_STATE_CHANGED_ACTION以在发生连接故障时收到通知。可能是由于提供无效的凭据以连接到Wi-Fi。

private void registerReceiver() {
        IntentFilter filter = new IntentFilter();
        filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
        filter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION);
        registerReceiver(mReceiver, filter);
    }

还有您的接收器

 private BroadcastReceiver mReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
        NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
            if (info != null) {
                if (info.isConnected()) {
                    //connected
                    WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
                    WifiInfo wifiInfo = wifiManager.getConnectionInfo();
                    String ssid = wifiInfo.getSSID();
                }
            }  else {
                if (intent.getAction().equals(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION)) {
                    if (intent.hasExtra(WifiManager.EXTRA_SUPPLICANT_ERROR)) {
                      //failed to connect
                }
            }
        }
    };

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有