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()的返回对象。