0

所以我在这里找到了这个答案。但是我无法让它运行,因为在使用 Context 类型参数调用它时未定义 isNetworkAvailable 函数。这是我使用的代码:

private boolean isNetworkAvailable(Context context)
{
    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo ni = cm.getActiveNetworkInfo();
    if(ni!= null && ni.isConnected())
    {
        return true;
    }
    return false;
}
public boolean dostupanInternet(Context context)
{
    if(isNetworkAvailable(context))
    {
        try
        {
            HttpURLConnection url = (HttpURLConnection) (new URL("http://www.google.com").openConnection());
            url.setRequestProperty("User-Agent", "test");
            url.setRequestProperty("Connection", "close");
            url.setConnectTimeout(1000);
            url.connect();
            return(url.getResponseCode() == 200);
        }
        catch(IOException e)
        {
            Log.e("LOG_TAG","Povezivanje sa internetom nije uspelo",e);
        }
    }
    else
        {
            Log.d("LOG_TAG", "Povezivanje sa internetom nije uspelo");
        }
    return false;
}

但是当我运行它时,它会返回一个致命错误并强制应用程序关闭。所以我的问题是 - 是什么导致了致命错误(显然是未处理的异常)以及什么代码可以让我通过互联网可用性检查?

4

1 回答 1

0

试试用这个方法

public boolean isConnectingToInternet(Context context){
    ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
      if (connectivity != null)
      {
          NetworkInfo[] info = connectivity.getAllNetworkInfo();
          if (info != null)
              for (int i = 0; i < info.length; i++)
                  if (info[i].getState() == NetworkInfo.State.CONNECTED)
                  {
                      return true;
                  }

      }
      return false;
}
于 2013-03-08T22:04:55.620 回答