2012-06-05 2 views
1

를 연결하는 경우에도 항상 false입니다 :NetworkInfo.isAvailable()는 이더넷 코드입니다 사용할 수 있으며 여기에

ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
NetworkInfo info = conMan.getActiveNetworkInfo(); 
Log.e("TEST","=================Info================\n"+info.toString()); 

로그 캣은

E/TEST (2113): =================Info================ 
E/TEST (2113): NetworkInfo: type: ETHERNET[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: (none), roaming: false, failover: false, isAvailable: false 

모양이 이상한 생각하십니까?

+0

를 확인하려면이 코드를 사용해보십시오 ... 가능하지만 연결되지는 솔루션의 목록입니다 http://www.java2s.com/Code/Android/Network/Connectivity.htm –

답변

0

당신에게 네트워크 연결 여기

public boolean isNetworkOnline() { 
boolean status=false; 
try{ 
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo netInfo = cm.getNetworkInfo(0); 
    if (netInfo != null && netInfo.getState()==NetworkInfo.State.CONNECTED) { 
     status= true; 
    }else { 
     netInfo = cm.getNetworkInfo(1); 
     if(netInfo!=null && netInfo.getState()==NetworkInfo.State.CONNECTED) 
      status= true; 
    } 
}catch(Exception e){ 
    e.printStackTrace(); 
    return false; 
} 
return status; 

} 
+1

감사합니다 Nishant. 그러나 문제는 일부 응용 프로그램이 이러한 종류의 논리로 연결을 판단하고 있다는 것입니다. NetworkInfo localNetworkInfo1 = ((ConnectivityManager) paramContext.getSystemService (Context.CONNECTIVITY_SERVICE)). getActiveNetworkInfo(); if (! localNetworkInfo1.isAvailable()) false false // 연결된 연결을 반환하지 않음 이더넷 연결은 있지만 Wi-Fi 연결이없는 동안에는 이러한 응용 프로그램이 정상적으로 실행되지 않습니다. 이 경우 isAvailable()은 이더넷이 ACTIVE 네트워크 일 때 항상 false를 반환하기 때문입니다. – user1434336

관련 문제