141 votos

cómo saber si está conectado wifi en Android

Yo no quiero que mi usuario probar incluso descargar algo menos que hayan conectado wifi. Sin embargo, yo sólo puedo parecer ser capaz de decir si wifi está activada, pero todavía podría tener una conexión 3G.

 android.net.wifi.WifiManager m = (WifiManager) getSystemService(WIFI_SERVICE);
android.net.wifi.SupplicantState s = m.getConnectionInfo().getSupplicantState();
NetworkInfo.DetailedState state = WifiInfo.getDetailedStateOf(s);
if( state != NetworkInfo.DetailedState.CONNECTED ){
            return false;
        }
 

Sin embargo, el Estado no es lo que me esperaba, aunque wifi está conectado estoy recibiendo OBTAINING_IPADDR como el estado.

353voto

Jason Knight Puntos 3167

Usted debe ser capaz de utilizar el ConnectivityManager para obtener el estado del adaptador Wifi. Desde allí se puede comprobar si está conectado o incluso disponible .

 ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

if (mWifi.isConnected()) {
    // Do whatever
}
 

NOTA: Debe tenerse en cuenta (para nosotros n00bies aquí) que es necesario agregar

 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
 

a su

AndroidManifest.manifest para que esto funcione.

19voto

Donal Rafferty Puntos 7914

Yo simplemente utilice el siguiente:

SupplicantState supState; 
wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
supState = wifiInfo.getSupplicantState();

Que va a volver uno de estos estados en el momento de llamar a getSupplicantState();

ASOCIADO de la Asociación de completado.

ASOCIANDO - Tratando de asociarse con un punto de acceso.

COMPLETADO Todos los autenticación completado.

DESCONECTADO - Este estado indica que el cliente no está asociado, pero es probabilidades de empezar a buscar un acceso punto.

LATENTE - Android-agregó el estado que cuando un cliente emite un explícito mandato DESCONECTAR.

FOUR_WAY_HANDSHAKE - WPA 4-Tecla Apretón de manos en progreso.

GROUP_HANDSHAKE - WPA Clave de Grupo Apretón de manos en progreso.

Inactivo INACTIVO estado.

No VÁLIDO - UN pseudo-estado que debe normalmente nunca ser visto. ESCANEO - La exploración de una red.

Sin inicializar: No hay conexión.

14voto

LukeMovement Puntos 81

había un vistazo a algunas pregunta como ésta y se acercó con esta

     ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
    NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

    if (mWifi.isConnected())
        //if wifi connected
    }

    ConnectivityManager connManager1 = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
    NetworkInfo mMobile = connManager1.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

    if (mMobile.isConnected()) {
        //if internet connected
    }
 

yo uso si por mi cheque de licencia en Root Toolbox Pro y parece que funciona greate.

6voto

kuchi Puntos 315

Estoy usando esto en mis aplicaciones para comprobar si la red está activa WiFi.

 ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if( ni != null && ni.getType() == ConnectivityManager.TYPE_WIFI )
{

//Do your work here

}
 

3voto

G M Ramesh Puntos 2376
ConnectivityManager manager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
boolean is3g = manager.getNetworkInfo(
            ConnectivityManager.TYPE_MOBILE)
                        .isConnectedOrConnecting();
boolean isWifi = manager.getNetworkInfo(
                        ConnectivityManager.TYPE_WIFI)
                        .isConnectedOrConnecting();

                Log.v("",is3g + " ConnectivityManager Test "
                        + isWifi);
                if (!is3g && !isWifi) {
                    Toast.makeText(
                            getApplicationContext(),
                            "Please make sure, your network connection is ON ",
                            Toast.LENGTH_LONG).show();
                } else {
                    put your function() to go furthere;

                }

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: