有没有办法找出连接的可能性?

时间:2012-04-30 12:08:55

标签: android nullpointerexception connectivity

我有一个应用程序,用于在运行主屏幕之前检查连接。只有用户试图在无线网络Xoom上运行它时,我才会收到通知,该应用程序始终会导致强制关闭问题,并且他已经通过市场向我发送了报告。

显然,应用程序在行检查设备是通过电话还是wifi连接的行上的if-then-else语句中保持崩溃,给出Null异常错误。

ConnectivityManager connec =  (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
if ( connec.getNetworkInfo(0).getState() != NetworkInfo.State.CONNECTED &&  connec.getNetworkInfo(1).getState() != NetworkInfo.State.CONNECTED  ) ...

由于它没有能力或组件,因此检查connec.getNetworkInfo(0).getState()会导致崩溃吗?如果是这样,我该如何解决这个问题,这样它就不会崩溃但仍适用于所有设备?

2 个答案:

答案 0 :(得分:3)

您可以通过以下代码检查网络状态

   boolean isInternetAvailable = false;
   ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
   NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();

    if(networkInfo != null && (networkInfo.isConnected()))
    {
        isInternetAvailable  = true;
    }  

在您的代码中,您正在使用 connec.getNetworkInfo(0).getState()而不检查 connec.getNetworkInfo(0)是否为空

答案 1 :(得分:1)

 public static boolean isNetworkAvailable(Context context) {

            boolean value = false;

            ConnectivityManager manager = (ConnectivityManager) context
                             .getSystemService(Context.CONNECTIVITY_SERVICE);

            NetworkInfo info = manager.getActiveNetworkInfo();

            if (info != null && info.isAvailable()) {
                           value = true;
            }

            return value;
 }