Android WIFI How To Detect When Specific WIFI Connection is Available

后端 未结 4 1807
迷失自我
迷失自我 2020-11-28 05:31

I need to detect when I have network connectivity to a SPECIFIC WIFI network.

For example: As soon as you walk into your house, and your phone picks up your home Wi

4条回答
  •  遥遥无期
    2020-11-28 06:16

    You can use BroadcastReceiver to find out that wifi network has changed:

    BroadcastReceiver broadcastReceiver = new WifiBroadcastReceiver();
    
    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION);
    context.registerReceiver(broadcastReceiver, intentFilter);
    

    The BroadcastReceiver may look like this. And to check for specific MAC address see the checkConnectedToDesiredWifi() method bellow.

    public class WifiBroadcastReceiver extends BroadcastReceiver {
    
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if (WifiManager.SUPPLICANT_STATE_CHANGED_ACTION .equals(action)) {
                SupplicantState state = intent.getParcelableExtra(WifiManager.EXTRA_NEW_STATE);
                if (SupplicantState.isValidState(state) 
                        && state == SupplicantState.COMPLETED) {
    
                    boolean connected = checkConnectedToDesiredWifi();
                }
            }
        }
    
        /** Detect you are connected to a specific network. */
        private boolean checkConnectedToDesiredWifi() {
            boolean connected = false;
    
            String desiredMacAddress = "router mac address";
    
            WifiManager wifiManager = 
                (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    
            WifiInfo wifi = wifiManager.getConnectionInfo();
            if (wifi != null) {
                // get current router Mac address
                String bssid = wifi.getBSSID();
                connected = desiredMacAddress.equals(bssid);
            }
    
            return connected;
        }
    }
    

提交回复
热议问题