Android:ConnectivityManager始终返回null

Luc*_*man 5 android

我总是得到一个空指针异常,即使我在这段代码上连接到wifi:

       ConnectivityManager connectivityManager = (ConnectivityManager)
                context.getSystemService(Context.CONNECTIVITY_SERVICE);
    Log.d("Problem", connectivityManager.getActiveNetworkInfo().toString());
Run Code Online (Sandbox Code Playgroud)

我的权限是:

<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" />
Run Code Online (Sandbox Code Playgroud)

我错过了什么:/?我只需要知道他何时连接到wifi点以及何时发生变化.但是连接管理器总是在ActiveNetworkInfo上返回null

nee*_*raj 15

用它来知道WIFI是否已连接.

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
}
Run Code Online (Sandbox Code Playgroud)

}