Android ConnectionManager空指针

Android ConnectionManager空指针,android,nullpointerexception,connectivity,Android,Nullpointerexception,Connectivity,在此处显示的代码中出现空指针问题。通常空指针是一个简单而容易修复的东西,但是在这种情况下,我完全不知道原因 空指针位于该行上: dataConnectionStatus = connManager.getActiveNetworkInfo().isConnected(); 下面显示的代码位于onCreate方法的开头。我之前使用了类似的代码来检查wifi连接是否处于活动状态。在这种情况下,我需要检查wifi或3g数据连接是否处于活动状态 当wifi和3g移动数据都关闭时,它会与空指针崩溃。在这

在此处显示的代码中出现空指针问题。通常空指针是一个简单而容易修复的东西,但是在这种情况下,我完全不知道原因

空指针位于该行上:

dataConnectionStatus = connManager.getActiveNetworkInfo().isConnected();
下面显示的代码位于onCreate方法的开头。我之前使用了类似的代码来检查wifi连接是否处于活动状态。在这种情况下,我需要检查wifi或3g数据连接是否处于活动状态

当wifi和3g移动数据都关闭时,它会与空指针崩溃。在这种情况下如何避免空值

ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);

 boolean dataConnectionStatus = false;

if(connManager!=null){
dataConnectionStatus = connManager.getActiveNetworkInfo().isConnected(); //<-NULL
}
ConnectivityManager connManager=(ConnectivityManager)getSystemService(CONNECTIVITY_服务);
布尔dataConnectionStatus=false;
if(connManager!=null){

dataConnectionStatus=connManager.getActiveNetworkInfo().isConnected();//检查是否有可用的活动网络。如果没有,请将其显示为Toast或要求激活任何一个

if(connManager!=null && connManager.getActiveNetworkInfo() != null){
    dataConnectionStatus = connManager.getActiveNetworkInfo().isConnected();
}
getActiveNetworkInfo()
正在返回
null

正如文件所说

返回有关当前活动的默认数据网络的详细信息。当 已连接,此网络是传出连接的默认路由。 在启动网络之前,应始终检查isConnected() 流量。当没有默认网络时,这可能返回null

因此,plz确保您可以访问活动网络

您可以尝试以下操作:

    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;
}

试着这样做……在这种情况下,connManager被初始化,不太容易出现异常

ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
    NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    NetworkInfo mMobile = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

    if (mWifi.isAvailable() == false && mMobile.isAvailable() == false) {
        showDialog(DIALOG_NETWORK_UNAVAILABLE);
    }

无需检查connManager!=null。它将始终为!=null。在您的示例中,可以为null的是connManager.getActiveNetworkInfo()的返回对象。