首页 > 解决方案 > 有没有办法检查我当前连接的 wifi 是否与以前连接的 wifi 不同?

问题描述

在我从后台返回应用程序后,我想检测我的 wifi 连接是否已更改(如果它已更改为蜂窝网络或其他一些 wifi 但不一样)。有没有办法做到这一点?我尝试了下面的代码,但它不起作用,即使相同的 wifi 保持连接,每次我返回应用程序时它都会继续启动。

 IntentFilter networkIntent = new IntentFilter();
        networkIntent.addAction("android.net.conn.CONNECTIVITY_CHANGE");
        networkIntent.addAction(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION);
        registerReceiver(wifichangereceiver, networkIntent);

下面是我的接收器:

public final BroadcastReceiver wifichangereceiver = new BroadcastReceiver() {


        @Override
        public void onReceive(final Context context, final Intent intent) {
            final ConnectivityManager connMgr = (ConnectivityManager) context
                    .getSystemService(Context.CONNECTIVITY_SERVICE);

            final android.net.NetworkInfo wifi = connMgr
                    .getNetworkInfo(ConnectivityManager.TYPE_WIFI);

            if (wifi.isConnected()) {
                hasWifiChanged = true;
              } else {
                hasWifiChanged = false;
              }
}

标签: androidandroid-intentandroid-wifiandroid-broadcastreceiverandroid-networking

解决方案


为什么不在一个变量中注册 wifi ID,然后当您连接到 WiFi 时,您可以将新的 wifi ID 与旧的 wifi ID 进行比较?

 WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
 WifiInfo wifiInfo = wifiManager.getConnectionInfo();
 String ssid = wifiInfo.getSSID();
 int networkid = wifiInfo.getNetworkId();

如果 networkid 在您的设备上返回 O,请改用 SSID。


推荐阅读