android - ConnectivityManager 空指针

标签 android nullpointerexception connectivity

在此处显示的代码中出现空指针问题。通常,空指针是一种简单易行的修复方法,但在这种情况下,我完全迷失了原因。

空指针在这一行:

dataConnectionStatus = connManager.getActiveNetworkInfo().isConnected();

下面显示的代码位于 onCreate 方法的开头。我之前使用类似的代码来检查 wifi 连接是否处于 Activity 状态。在这种情况下,我需要检查 wifi 或 3g 数据连接是否处于 Activity 状态。

空指针崩溃的情况是wifi和3g移动数据都关闭的时候。在这种情况下如何避免 null?

ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);

 boolean dataConnectionStatus = false;

if(connManager!=null){
dataConnectionStatus = connManager.getActiveNetworkInfo().isConnected(); //<-NULL
}

最佳答案

getActiveNetworkInfo() 正在返回 null

正如文档所说,

Returns details about the currently active default data network. When connected, this network is the default route for outgoing connections. You should always check isConnected() before initiating network traffic. This may return null when there is no default network.

因此,请确保您可以访问 Activity 网络。

您可以尝试以下操作:

    public static boolean isInternetAvailable(Context cxt) {

    ConnectivityManager cm = (ConnectivityManager) cxt
            .getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo netInfo = cm.getActiveNetworkInfo();

    if (netInfo != null && netInfo.isConnectedOrConnecting()) {

        Log.i("NetworkStatus :", "Network connection available.");
        return true;
    }

    return false;
}

关于android - ConnectivityManager 空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18735370/

相关文章:

android - 如何在 Android 旋转上创建这样的过渡效果

android - 保留 android.support.v4 后,使用 proguard 在 android.support.v4 处出现 nullPointerException

flutter - 在 Flutter 中恢复互联网连接时获取数据

iphone - 检查互联网连接 iOS 5

java - 是否可以使用伴随对象扩展具有非空构造函数的类

java - Android Studio - 无法读取首选项设置

java - BufferedReader 读取一个为 null 的值

java - 任务“app :transformClassesWithInstantRunForDebug”执行失败

algorithm - 图的 k-顶点连通性

java - 如何在选择文本时停止 EditText 显示键盘?