【问题标题】:How to take the connected wifi ssid when change the wifi in android在android中更改wifi时如何获取连接的wifi ssid
【发布时间】:2019-11-26 05:28:38
【问题描述】:

我需要在 android 中获取已连接 wifi 的 SSID。更改 wifi 网络后,我需要获取 SSID。

我搜索了很多关于这个的东西,但我没有得到正确的答案。

我了解到,对于这项任务,需要Broadcast Reciever。但我不知道如何为此使用广播接收器。任何人都可以帮助我。

我需要跟进哪些步骤?

【问题讨论】:

    标签: java android android-wifi


    【解决方案1】:

    以下方法是获取已连接Wifi的SSID。

        public String getConnectedSSID() {
                WifiInfo wifiInfo = getWifiInfo();
                if (wifiInfo != null && wifiInfo.getSupplicantState() == SupplicantState.COMPLETED) {
                    Log.i(TAG, "getConnectedSSID" + wifiInfo.getSSID());
                    return wifiInfo.getSSID().replace("\"", "");
                } else {
                    if (mWifiConnectionListener != null) {
                        mWifiConnectionListener.onError(!mWifiManager.isWifiEnabled() ? WifiConnectionListener.WIFI_ERROR.WIFI_DISABLED : WifiConnectionListener.WIFI_ERROR.WIFI_NOT_CONNECTED);
                    }
                    return null;
                }
            }
    

    您必须在广播接收器下方注册。 intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);mContext.registerReceiver(mWifiConnectivityState, intentFilter);

    private final BroadcastReceiver mWifiConnectivityState = new BroadcastReceiver() {
        @Override
        public void onReceive(Context c, Intent intent) {
            String action = intent.getAction();
    
            switch (action) {
    
                case ConnectivityManager.CONNECTIVITY_ACTION:
                    NetworkInfo networkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
                    if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
                        switch (networkInfo.getState()) {
                            case CONNECTED:
                                WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
                                WifiInfo info = wifiManager.getConnectionInfo();
                                NetworkInfo networkInfo = ((ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
                                boolean isConnected = networkInfo != null && networkInfo.isConnected();
                                if (isConnected)
                                    mConnectedSSID = info.getSSID();
                                //register callback and pass SSID as parameter.
                                break;
                            case CONNECTING:
                                break;
                            case DISCONNECTED:
                                break;
                            case DISCONNECTING:
                                break;
                        }
                    }
                    break;
            }
        }
    };
    

    【讨论】:

      猜你喜欢
      • 2014-02-18
      • 2021-02-05
      • 2019-03-01
      • 1970-01-01
      • 2014-05-27
      • 2019-03-31
      • 2014-10-06
      • 2012-10-13
      • 1970-01-01
      相关资源
      最近更新 更多