java - android中更改wifi时如何获取连接的wifi ssid

标签 java android android-wifi

我需要在android中获取连接的wifi的SSID。当wifi网络改变时我需要获取SSID。

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

我了解到,此任务需要一个广播接收器。但我不知道如何使用广播接收器来实现这一点。任何人都可以帮助我。

我需要采取哪些后续步骤?

最佳答案

以下方法是获取已连接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;
        }
    }
};

关于java - android中更改wifi时如何获取连接的wifi ssid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59044313/

相关文章:

java - 在 Java 正则表达式中仅打印三位数字的量词

java - 数组中的对数和

java - 使用 C/C++ 进行 Android 开发是否比 Java 更快?

android - 带两个抽屉的 DrawerLayout : Right one "jumping" when left one is opened?

java - java继承的概念..help

java - 您可以比 JVM GC 处理的速度更快地创建对象吗?于是OOM发生了?

javascript - 在Android WebView中通过javascript检测对HTML选项标签的点击

android - android如何知道wifi连接是否可以上网

java - 如何在 Android 中一次又一次地从 wifi 列表中选择相同的 wifi 运营商?

android - 确定Android设备中的3G/WIFI radio 状态机当前状态