Есть ли способ проверить, отличается ли мой текущий подключенный Wi-Fi от предыдущего подключенного Wi-Fi? - PullRequest
0 голосов
/ 26 сентября 2018

Я хочу определить, изменилось ли мое Wi-Fi-соединение (если оно изменилось на сотовый или другой Wi-Fi, но не тот же) после того, как я вернулся в приложение из фона.Есть какой-либо способ сделать это?Я попробовал приведенный ниже код, но он не работает, он продолжает срабатывать каждый раз, когда я возвращаюсь в приложение, даже если тот же Wi-Fi остается подключенным.

 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;
              }
}

1 Ответ

0 голосов
/ 02 октября 2018

Почему бы не зарегистрировать идентификатор Wi-Fi в переменной, а затем при подключении к WiFi вы можете сравнить новый идентификатор Wi-Fi со старым?

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

Если networkid возвращает O на вашем устройстве,просто используйте вместо этого SSID.

...