How to know the status of my connection?

2

I have searched and I have not found anything that tells me how to tell the user that he has connected to a network. I know it's something with Broadcast Reciever but I do not know what I have to do. I made one that works for me but it's to list wifis. Tell me if I can modify it to achieve what I want. Thanks for any help.

private final BroadcastReceiver wifiScanReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {
            wifiList = wifiManager.getScanResults();
            showWifis();
        }
    }
};




public void detectWifi() {
    registerReceiver(wifiScanReceiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
    wifiManager.startScan();
}
    
asked by Alex Rivas 21.05.2018 в 18:52
source

1 answer

2

Create your class that extends from BroadcastReceiver and can detect when you connect to a new network using networkInfo.isConnected () :

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.NetworkInfo;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.util.Log;

public class WifiReceiver extends BroadcastReceiver {

    private static final String TAG = "WifiReceiver";

    @Override
    public void onReceive(Context context, Intent intent) {

        NetworkInfo networkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);

        if (networkInfo != null && networkInfo.isConnected()) {
            WifiInfo wifiInfo = intent.getParcelableExtra(WifiManager.EXTRA_WIFI_INFO);
            String ssid = wifiInfo.getSSID();
            Log.i(TAG, "Connected to : " + ssid);
        }else{
            Log.e(TAG, "Network not connnected!");
        }
    }
}

In your file AndroidManifest.xml register the receiver :

<receiver
    android:name=".WifiReceiver"
    android:enabled="true"
    android:exported="false">

    <intent-filter>         
        <action android:name="android.net.wifi.STATE_CHANGE" />
    </intent-filter>

</receiver>

From onCreate() of your Activity , you can register the receiver:

  IntentFilter intentFilter = new IntentFilter();
  intentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
  WifiReceiver wifiReceiver = new WifiReceiver();
  registerReceiver(wifiReceiver, intentFilter);

This way in the LogCat you will be able to observe when you connect or disconnect to a WiFi Network:

    
answered by 21.05.2018 / 19:45
source