Lorenzo
Lorenzo

Reputation: 117

Detecting if android is connected to internet

I have a big problem: I want control if 3G or WiFi are activated. This is my code:

//controllo se è accesa la connessione 
        ConnectivityManager cm =
                (ConnectivityManager)this.getSystemService(Context.CONNECTIVITY_SERVICE);

        NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
        boolean isConnected = activeNetwork.isConnectedOrConnecting();
        //controllo se sono connesso
        if(isConnected==false){
            final AlertDialog.Builder builder=new AlertDialog.Builder(this);
        builder.setTitle("Attenzione!");
        builder.setMessage("L'applicazione senza la connessione ad internet non può funzionare. La preghiamo di attivarla.");
        builder.setIcon(android.R.drawable.ic_dialog_alert);
        builder.setPositiveButton("OK", new OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {

            }
        });
        builder.show();}

It's into the oncreate. When I open the activity I have a force close. The cause is this:

Caused by: java.lang.NullPointerException

I don't understand where is the problem :(

Upvotes: 1

Views: 4766

Answers (4)

Shankar Agarwal
Shankar Agarwal

Reputation: 34765

ConnectivityManager cm = (ConnectivityManager)getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = false;
if(activeNetwork!=null)
    isConnected = true;
activeNetwork.isConnectedOrConnecting();
if(!isConnected){
   final AlertDialog.Builder builder=new AlertDialog.Builder(YourActivity.this);
   builder.setTitle("Attenzione!");
   builder.setMessage("L'applicazione senza la connessione ad internet non può funzionare. La preghiamo di attivarla.");
   builder.setIcon(android.R.drawable.ic_dialog_alert);
   builder.setPositiveButton("OK", new OnClickListener() {

   public void onClick(DialogInterface dialog, int which) {
   }
   });
   builder.show();
}

Upvotes: 1

K_Anas
K_Anas

Reputation: 31466

The getActiveNetworkInfo() method of ConnectivityManager returns a NetworkInfo instance representing the first connected network interface it can find or null if none if the interfaces are connected. Checking if this method returns null should be enough to tell if an internet connection is available.

private boolean isNetworkAvailable() {
    ConnectivityManager connectivityManager 
          = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null;
}

You will also need:

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

in your android manifest.

Upvotes: 2

ρяσѕρєя K
ρяσѕρєя K

Reputation: 132982

You can Check if the device has Internet connection or not as:

public  boolean CheckConnection() {
    ConnectivityManager cm = (ConnectivityManager) MbridgeApp.getContext().getSystemService(
        Context.CONNECTIVITY_SERVICE);

    NetworkInfo wifiNetwork = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    if (wifiNetwork != null && wifiNetwork.isConnected()) {
      return true;
    }

    NetworkInfo mobileNetwork = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
    if (mobileNetwork != null && mobileNetwork.isConnected()) {
      return true;
    }

    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    if (activeNetwork != null && activeNetwork.isConnected()) {
      return true;
    }
    return false;
  }

Upvotes: 2

CommonsWare
CommonsWare

Reputation: 1006654

If there is no active connection, getActiveNetworkInfo() returns null.

Upvotes: 2

Related Questions