Check Wifi Connection static Android Programming

To detect if a WiFi connection is available in Android, we can use the ConnectivityManager and NetworkCapabilities classes, which are more modern and recommended for newer versions of Android. This approach allows us to efficiently check the network status and is essential for applications that rely on internet connectivity.

We can create a static method checkWifiStatus() that returns a boolean value true if WiFi is available. This method can be reused across different parts of the application, ensuring a consistent way to check the WiFi status.


import android.content.Context;
import android.content.pm.ActivityInfo;
import android.net.ConnectivityManager;
import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        setContentView(R.layout.activity_main);

        boolean isWifiConnected = checkWifiStatus(this);
        Toast.makeText(MainActivity.this, "WiFi connected: " + isWifiConnected, Toast.LENGTH_SHORT).show();
    }

    public static boolean checkWifiStatus(Context context) {
        ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connManager != null) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                NetworkCapabilities capabilities = connManager.getNetworkCapabilities(connManager.getActiveNetwork());
                return capabilities != null && capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI);
            } else {
                NetworkInfo networkInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
                return networkInfo != null && networkInfo.isConnected();
            }
        }
        return false; // Return false if ConnectivityManager is null or no WiFi connection is found
    }
}

You need to pass the Context if you have this method in other classes. This ensures that the method can access the system services required to check the network status.


fun checkWifiStatus(context: Context): Boolean {
    val connManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
    return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        val capabilities = connManager.getNetworkCapabilities(connManager.activeNetwork)
        capabilities != null && capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)
    } else {
        val networkInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
        networkInfo != null && networkInfo.isConnected
    }
}


Important: Don't forget to use the permission in AndroidManifest.xml, as this permission is necessary for accessing network state information



<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

Comments & Discussion

Facing issues? Have questions? Post them here! We're happy to help!