2013-03-08 3 views
0

그래서 여기에 this answer이 있습니다. 그러나 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; 
} 

하지만이를 실행할 때 치명적인 오류를 반환 및 종료에 응용 프로그램을 강제로. 내 질문은 - 치명적인 오류 (분명히 처리되지 않은 예외)가 발생한 이유와 그 인터넷 가용성 검사를 통과 한 코드가 무엇입니까?

+2

*. 또한 네트워크 작업이 기본 (UI) 스레드에서 수행되지 않도록하십시오. –

+0

코드에'ACCESS_NETWORK_STATE' 권한이 필요하다는 사실을 명심하십시오. – CommonsWare

+0

ACCESS_NETWORK_STATE 및 인터넷 사용 권한을 모두 추가했습니다. 두 분 모두 도와 주셔서 감사합니다. – NitroNbg

답변

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; 
} 
관련 문제