2014-07-09 4 views
0

나는 지속적인 인터넷 접속이 필요한 안드로이드 응용 프로그램을 만들었습니다. 기기가 Wi-Fi에 연결되어있을 때뿐만 아니라 데이터를 검색 할 수있을 때도 (때로는 WiFi에 연결되어 있지만 인터넷에 액세스 할 수없는 경우도 있음) 지속적으로 확인하고 싶습니다. 이것을 달성하기위한 접근 방법이 있습니까? 또한이 접근법은 사용자에게 친숙 할 것입니다 (더 많은 데이터를 먹을 것입니까?)?인터넷을 사용할 수 있는지 계속 확인하십시오.

+0

http://developer.android.com/에서이 호출 할 수 있습니다 교육/모니터링 - 기기 상태/연결 모니터링 .html – Blacklight

+0

이 도움말을 참조하면 도움이 될 것입니다. http://stackoverflow.com/questions/6493517/android-detect-if-device-has-internet-connection –

답변

0

이것을 사용할 수 있습니다.

public boolean isConnected() { 
    ConnectivityManager cm = 
     (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo netInfo = cm.getActiveNetworkInfo(); 
    if (netInfo != null && netInfo.isConnectedOrConnecting()) { 
     return true; 
    } 
    return false; 
} 

가 네트워크에 연결을 검사에 사용는, isConnected, 다음 인터넷 접근성을

public boolean isOnline() { 

    if (isConnected()) { 
     try { 
      URL url = new URL("http://www.google.com"); // or any valid link. 
      HttpURLConnection urlc = (HttpURLConnection) url.openConnection(); 
      urlc.setConnectTimeout(3000); 
      urlc.connect(); 
      if (urlc.getResponseCode() == 200) { 
       return true; 
      } 
     } catch (MalformedURLException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
    return false; 
} 

을 확인하기 위해 다음 코드를 사용하면 서버 클래스

+0

이것이 어떻게 사용자 데이터 소비에 영향을 줄 수 있습니까? – Mihirrai

0

나는뿐만 아니라 장치가 무선 랜에 을 연결되어있는 경우뿐만 아니라이 데이터를 검색 할 수있는 (때로는 무선 랜에 연결 하지만 여전히 인터넷 접속이 없음), 지속적으로 그것을 확인하고 싶습니다. 이를 달성하기 위해 접근 방식이 있습니까?

예, 가능합니다. 코드 : here :

public boolean isOnline() { 
    ConnectivityManager cm = 
     (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo netInfo = cm.getActiveNetworkInfo(); 
    if (netInfo != null && netInfo.isConnectedOrConnecting()) { 
     return true; 
    } 
    return false; 
} 

네트워크 요청을하기 전에 실행할 수 있습니다.

또는 BoadcastReceiver을 구현하고 네트워크 연결 변경 사항에 대한 알림을받을 수 있습니다. 다음 작업에 등록해야합니다.

<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> 

자세한 내용은 developer guide입니다.

+0

때때로 WiFi에 연결되어 있지만 int가 없습니다. 에넷 액세스 : 이것은 제안 된 접근 방식에 문제가 될 것입니다. –

+0

나는 그것을 시도했다. 기기가 Wi-Fi에 연결되어 있는지 여부를 확인하는 동안 WiFi가 인터넷에 연결되어 있는지 확인하는 데 도움이되지 않습니다. – Mihirrai

+0

@ user3615476 'google'과 같이 하나의 접근 가능한 사이트에 연결을 시도한 다음 응답을 받고 200과 같은지 확인한 후 인터넷에 접속하면이 답변과 의견이 필요합니다. 즉, netInfo! = null && netInfo.isConnectedOrConnecting()을 호출하면 응답이 200이면 true이고 그렇지 않으면 false를 반환합니다. –

관련 문제