1

我有一个应用程序,旨在在运行主屏幕之前检查连接性。只有尝试在仅 wifi 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  ) ...

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

4

2 回答 2

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)是否为空

于 2012-04-30T12:53:45.130 回答
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;
 }
于 2012-04-30T13:55:00.690 回答