【问题标题】:NetworkInfo.isAvailable() for Ethernet is always false even if Ethernet is available and connected即使以太网可用且已连接,以太网的 NetworkInfo.isAvailable() 始终为 false
【发布时间】:2012-06-05 06:38:42
【问题描述】:

代码如下:

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

logcat 的样子

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

你觉得这很奇怪吗?不可用但已连接...

【问题讨论】:

标签: android networking ethernet


【解决方案1】:

试试这个代码来检查你的网络连接

 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;

}  

【讨论】:

  • 感谢 Nishant。但问题在于,有些应用程序是通过这种逻辑来判断连通性的: NetworkInfo localNetworkInfo1 = ((ConnectivityManager)paramContext.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); if(!localNetworkInfo1.isAvailable()) return false;//return not connected 如果有以太网连接但没有 Wi-Fi 连接,这些应用程序将无法正常运行。因为在这种情况下 isAvailable() 总是返回 false,因为以太网是 ACTIVE 网络。
猜你喜欢
  • 2012-05-13
  • 2012-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-20
  • 2014-08-27
  • 2023-04-05
  • 1970-01-01
相关资源
最近更新 更多