0

だから私はここでこの答えを見つけました。ただし、Context typeパラメーターを使用して呼び出すときに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 に答える