Uno snippet di codice per controllare la presenza di una connessione attiva su smartphone. D’obbligo quando si lavora con App che necessitano di una connessione internet per funzionare:

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
 
public class InternetConnection {
 
	public static boolean haveInternetConnection(Context contesto) {
	    boolean haveConnectedWifi = false;
	    boolean haveConnectedMobile = false;
 
	    ConnectivityManager cm = (ConnectivityManager) contesto.getSystemService(Context.CONNECTIVITY_SERVICE);
	    NetworkInfo[] netInfo = cm.getAllNetworkInfo();
	    for (NetworkInfo ni : netInfo) {
	        if (ni.getTypeName().equalsIgnoreCase("WIFI"))
	            if (ni.isConnected())
	                haveConnectedWifi = true;
	        if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
	            if (ni.isConnected())
	                haveConnectedMobile = true;
	    }
	    return haveConnectedWifi || haveConnectedMobile;
	}
 
}

Questo metodo è pubblico, può essere chiamato da qualsiasi Activity passando come parametro in ingresso il Context. Il metodo restituisce true se è presente una connessione (Dati o Wifi che sia), false altrimenti.

Esempio con l’Activity principale:

public class MainActivity extends Activity {
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
	if (InternetConnection.haveNetworkConnection(MainActivity.this))
		Log.i("CONNESSIONE Internet", "Presente!");
	else
		Log.e("CONNESSIONE Internet","Assente!");
}
 
}

Non dimenticate di aggiungere questi permessi nell’AndroidManifest.xml:

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