Android интернет-соединение - PullRequest
0 голосов
/ 02 июня 2011

Я использую следующий код, чтобы узнать, есть ли у пользователя подключение к интернету (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///
}

1 Ответ

1 голос
/ 02 июня 2011

Я думаю, что 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...