2013-08-14 5 views
0

네트워크를 사용할 수 있는지 여부를 확인하려면 아래 코드를 사용하지만 때로는 네트워크를 사용할 수 있지만 데이터 전송이 없기 때문에 내 인터넷이 연결이 실패하고 예외가 발생합니다.사용 가능한 네트워크를 통해 데이터가 전송되는지 여부를 확인하는 방법은 무엇입니까?

그래서
public boolean isNetworkAvailable() { 
    ConnectivityManager connectivityManager 
      = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); 
    return activeNetworkInfo != null && activeNetworkInfo.isConnected(); 
} 

이, 내가 해결책을 찾는 데 도움이 될 수 있습니다

코드인가?

감사

+0

특정 시점에 데이터가 전송되는지 또는 사용 가능한 네트워크에서 데이터 전송이 가능한지 알고 싶습니까? – xwz7611

답변

1

난 그냥 인터넷 연결을 보장하지 않습니다 네트워크 정보에 geting 생각하기 때문에 나는 연결을 확인하려면 다음 코드를 사용하고 있습니다. 따라서 원격 URL에 대한 실제 HTTP 요청을 만들어 성공했는지 확인하는 것이 더 바람직하다고 생각합니다.

public static boolean isInternetAvailable(Context cxt) { 

     ConnectivityManager cm = (ConnectivityManager) cxt 
       .getSystemService(Context.CONNECTIVITY_SERVICE); 

     NetworkInfo netInfo = cm.getActiveNetworkInfo(); 

     if (netInfo != null && netInfo.isConnectedOrConnecting() && canHit()) { 

      Log.i(App.TAG, "Network connection available."); 
      return true; 
     } 

     return false; 
    } 

    public static boolean canHit() { 

     try { 

      URL url = new URL("http://www.google.com/"); 
      HttpURLConnection urlConnection = (HttpURLConnection) url 
        .openConnection(); 
      urlConnection.setConnectTimeout(3000); 
      urlConnection.connect(); 
      urlConnection.disconnect(); 
      return true; 

     } catch (Exception e){ 
      e.printStackTrace(); 
      return false; 
     } 
    } 
+0

좋은 생각이긴하지만 canHit()은 항상 false를 반환합니다. 이것에 대해 알고 계시나요? –

+0

이 코드는 에뮬레이터와 장치에서도 시험되고 테스트되었습니다. 그것은 아무 문제없이 저를 위해 작동합니다. 그러므로 나는 인터넷이 켜져 있는지 확인하는 것이 좋습니다. –

+0

시간 초과로 인해 연결 속도가 너무 느려서 매번 false가 제공 될 수 있습니다. 10 ~ 15 초로 시도해 보시기 바랍니다. –

0

사용자가 연결되어 있지만 웹 브라우저를 통해 암호를 제공 할 때까지 인터넷 접속이없는 BT의 openzone 또는 유사한 연결을 할 수있다. 데이터 연결 문제는 항상 발생합니다. 각 경우에 처리해야합니다.

또한 사용자가 여전히 접속을 설정할지 여부를 확인

isConnectedOrConnecting() 

체크 아웃. http://developer.android.com/reference/android/net/NetworkInfo.html

관련 문제