Lucas Kauffman
Lucas Kauffman

Reputation: 6881

Android: ConnectivityManager always returning null

I always get a null pointer exception, even when I'm connected to the wifi on this piece of code:

       ConnectivityManager connectivityManager = (ConnectivityManager)
                context.getSystemService(Context.CONNECTIVITY_SERVICE);
    Log.d("Problem", connectivityManager.getActiveNetworkInfo().toString());

My permissions are:

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.SEND_SMS" >
</uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS" >
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_UPDATES" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.CONNECTIVITY_CHANGE" />

What am I missing :/? I just need to know if when he's connected to a wifi spot and when this changes. But the connectivity manager always returns null on the ActiveNetworkInfo

Upvotes: 5

Views: 13767

Answers (5)

redflatiron
redflatiron

Reputation: 46

public static boolean isNetworkAvailable(Context ctx) {
    NetworkInfo info = getActiveNetworkInfo(ctx);
    return info != null && info.isAvailable();
}

public static boolean isWifiAvailable(Context ctx) {
    NetworkInfo info = getActiveNetworkInfo(ctx);
    return info != null && info.isAvailable()
            && info.getType() == ConnectivityManager.TYPE_WIFI;
}

private static NetworkInfo getActiveNetworkInfo(Context ctx) {
    ConnectivityManager cm = (ConnectivityManager) ctx
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo info = cm.getActiveNetworkInfo();
    return info;
}

Upvotes: 0

Cyril Jacquart
Cyril Jacquart

Reputation: 2762

Have you checked if the Data Connexion is activated?

Upvotes: -1

Pradeep Sodhi
Pradeep Sodhi

Reputation: 2145

   //decleration

boolean net;


//OnCreate
net = isOnline();
if (net == true) {
//perform internet related task.
}
else
{

                        AlertDialog.Builder alert = new AlertDialog.Builder(
                                AddSite.this);

                        alert.setMessage(
                                "No signal found or Internet connection is not connected.")
                                .setTitle("Error")
                                .setNeutralButton("OK",
                                        new DialogInterface.OnClickListener() {

                                            public void onClick(
                                                    DialogInterface dialog,
                                                    int which) {
                                                // TODO Auto-generated method
                                                // stub

                                            }
                                        }).show();

}

//function

public boolean isOnline() {
        ConnectivityManager cm = (ConnectivityManager) this
                .getSystemService(Context.CONNECTIVITY_SERVICE);

        NetworkInfo activeNetworkInfo = cm.getActiveNetworkInfo();
        return activeNetworkInfo != null;

        // return cm.getActiveNetworkInfo().isConnected();

    }

Upvotes: 0

idiottiger
idiottiger

Reputation: 5177

connectivityManager.getActiveNetworkInfo()

update:

return the current device's active network connect, if your device has only wifi and wifi is not opened, it always null.

suggestion register the action receive: ConnectivityManager.CONNECTIVITY_ACTION

when receive the action you can check the connect using follow code:

NetworkInfo network = mConnectivityManager.getActiveNetworkInfo();
        if (network != null) {
            boolean isConnectedOrConnecting =  network.isConnectedOrConnecting();
            ...
        }

Upvotes: 1

neeraj
neeraj

Reputation: 740

use this to know that WIFI is connected or not .

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;

public class Network {
private Context context;
private ConnectivityManager connManager;

public Network(Context ctx) {
    this.context = ctx;
}

public boolean getConnectivityStatus() {
    connManager = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo info = connManager.getActiveNetworkInfo();
    if (info != null)
        return info.isConnected(); // WIFI connected
    else
        return false; // no info object implies no connectivity
}

}

Upvotes: 15

Related Questions