van*_*dzi 9 android android-service android-networking
我在连接管理器中偶尔会看到空指针异常.从意图服务我通过isOnWIFI(this)检查网络状态.在cm.getActiveNetworkInfo()行发生异常.这很奇怪,因为我在调用之前检查了null.注意:权限已设置.
public static boolean isOnWIFI(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
return cm != null
//here occurs NullPointerException
&& cm.getActiveNetworkInfo() != null
&& ((cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI) != null && cm.getNetworkInfo(
ConnectivityManager.TYPE_WIFI).isConnected()));
}
Run Code Online (Sandbox Code Playgroud)
有没有想过为什么会这样?我无法调试它,因为它只是偶尔出现错误报告.我看到的唯一解决方案是将其放入try catch块.谢谢.
如果没有活动连接,他们只是返回null我认为这是你的问题.
http://developer.android.com/reference/android/net/ConnectivityManager.html #getActiveNetworkInfo()
小智 6
android_dev是对的.您的代码中的问题来自cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected()));
是! 你cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI) != null之前检查过,但是通过getNetworkInfo()第二次调用,android会再次获取网络信息,但这次它没有遇到第二次返回null的活动网络.问题是,不是因为你getNetworkInfo()之前调用了毫秒并且没有得到空值,这意味着你不会在一毫秒之后得到它
Try this. Read more here
Run Code Online (Sandbox Code Playgroud)
http://developer.android.com/training/basics/network-ops/managing.html
public static boolean isOnWIFI(Context context) {
ConnectivityManager cm = (ConnectivityManager) this.getSystemService(context.CONNECTIVITY_SERVICE);
if(cm != null){
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
boolean isWiFi = networkInfo.getType() == ConnectivityManager.TYPE_WIFI;
// if user is connected to network
if (isWifi) {
return true;
}else {
return false;
}
}
else{
//cm is null
return false
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17250 次 |
| 最近记录: |