Android 安卓互联网连接

Android 安卓互联网连接,android,connection,Android,Connection,我使用以下代码查看用户是否有互联网连接(WIFI、3G或Edge)。 为什么有些用户在没有互联网连接的情况下却没有互联网连接 try{ ConnectivityManager connec = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); State wifi = connec.getNetworkInfo(1).getState(); if (connec.getNe

我使用以下代码查看用户是否有互联网连接(WIFI、3G或Edge)。 为什么有些用户在没有互联网连接的情况下却没有互联网连接

try{
  ConnectivityManager connec =  (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
            State wifi = connec.getNetworkInfo(1).getState();

  if (connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED ||
    connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING || 
    wifi == NetworkInfo.State.CONNECTED || wifi == NetworkInfo.State.CONNECTING ) {
    ///HAVE CONNECTION CODE////
            }else if ( connec.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED ||   connec.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED   ) {
    ///NO CONNECTION CODE///
  }
} catch (Throwable t){
///NO CONNECTION CODE///
}

我猜
connec.getNetworkInfo(0)
connec.getNetworkInfo(1)
并不总是对wifi/3g网络接口有效。尝试检查接口的“TypeName”。我用这个代码

public boolean HaveNetworkConnection() {
    boolean HaveConnectedWifi = false;
    boolean HaveConnectedMobile = false;

    ConnectivityManager connManager = (ConnectivityManager) appContext.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo[] netInfo = connManager.getAllNetworkInfo();
    for (NetworkInfo ni : netInfo) {
        Log.d("HaveNetworkConnection()", ni.toString());
        if (ni.getTypeName().equalsIgnoreCase("WIFI"))
            if (ni.isConnected())
                HaveConnectedWifi = true;
        if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
            if (ni.isConnected())
                HaveConnectedMobile = true;
    }
    return HaveConnectedWifi || HaveConnectedMobile;
}