¿Cómo puedo ver si Wi-Fi está conectado en Android?

No quiero que mi usuario intente descargar algo a menos que tengan conexión Wi-Fi. Sin embargo, sólo puedo ser capaz de decir si Wi-Fi está habilitado, 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 yo esperaría. Aunque Wi-Fi está conectado, estoy obteniendo OBTAINING_IPADDR como el estado.

15 Solutions collect form web for “¿Cómo puedo ver si Wi-Fi está conectado en Android?”

Debe poder utilizar ConnectivityManager para obtener el estado del adaptador Wi-Fi. 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 ser observado (para nosotros n00bies aquí) que usted necesita agregar

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

para usted

AndroidManifest.xml para que esto funcione.

NOTA2 : networkInfo public NetworkInfo getNetworkInfo (int networkType) ahora está obsoleto:

Este método se ha obsoleto en el nivel 23 de API. Este método no admite múltiples redes conectadas del mismo tipo. Utilice getAllNetworks () y getNetworkInfo (android.net.Network) en su lugar.

Dado que el método NetworkInfo.isConnected () está ahora obsoleto en API-23 , aquí hay un método que detecta si el adaptador Wi-Fi está activado y también está conectado a un punto de acceso usando WifiManager:

 private boolean checkWifiOnAndConnected() { WifiManager wifiMgr = (WifiManager) getSystemService(Context.WIFI_SERVICE); if (wifiMgr.isWifiEnabled()) { // Wi-Fi adapter is ON WifiInfo wifiInfo = wifiMgr.getConnectionInfo(); if( wifiInfo.getNetworkId() == -1 ){ return false; // Not connected to an access point } return true; // Connected to an access point } else { return false; // Wi-Fi adapter is OFF } } 

Simplemente uso lo siguiente:

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

Que devolverá uno de estos estados en el momento en que llame a getSupplicantState ();

ASOCIADO – Asociación completada.

ASOCIANDO – Tratando de asociarse con un punto de acceso.

COMPLETED – Toda la autenticación completada.

DISCONNECTED – Este estado indica que el cliente no está asociado, pero es probable que comience a buscar un punto de acceso.

DORMANT – Un estado añadido a Android que se informa cuando un cliente emite un comando DISCONNECT explícito.

FOUR_WAY_HANDSHAKE – WPA 4-Way Key Handshake en curso.

GROUP_HANDSHAKE – Grupo WPA Key Handshake en curso.

INACTIVO – Estado inactivo.

INVALID – Un pseudo-estado que normalmente nunca debe ser visto.

ESCANEADO – Búsqueda de una red.

UNINITIALIZED – Sin conexión.

He echado un vistazo a algunas preguntas como esta y surgió con esto:

 ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); NetworkInfo wifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); NetworkInfo mobile = connManager .getNetworkInfo(ConnectivityManager.TYPE_MOBILE); if (wifi.isConnected()){ // If Wi-Fi connected } if (mobile.isConnected()) { // If Internet connected } 

Yo uso si para mi verificación de licencia en Root Toolbox PRO, y parece que funciona muy bien.

Estoy utilizando esto en mis aplicaciones para comprobar si la red activa es Wi-Fi:

 ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo ni = cm.getActiveNetworkInfo(); if (ni != null && ni.getType() == ConnectivityManager.TYPE_WIFI) { // Do your work here } 
 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 further; } 

Pruebe este método.

 public boolean isInternetConnected() { ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); boolean ret = true; if (conMgr != null) { NetworkInfo i = conMgr.getActiveNetworkInfo(); if (i != null) { if (!i.isConnected()) { ret = false; } if (!i.isAvailable()) { ret = false; } } if (i == null) ret = false; } else ret = false; return ret; } 

Este método ayudará a encontrar la conexión a Internet disponible o no.

Mientras que la respuesta de Jason es correcta, hoy en día getNetWorkInfo (int) es un método obsoleto. Por lo tanto, la siguiente función sería una buena alternativa:

 public static boolean isWifiAvailable (Context context) { boolean br = false; ConnectivityManager cm = null; NetworkInfo ni = null; cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); ni = cm.getActiveNetworkInfo(); br = ((null != ni) && (ni.isConnected()) && (ni.getType() == ConnectivityManager.TYPE_WIFI)); return br; } 

Esto es lo que utilizo como un método de utilidad en mis aplicaciones:

 public static boolean isDeviceOnWifi(final Context context) { ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); return mWifi != null && mWifi.isConnectedOrConnecting(); } 

Usando WifiManager usted puede hacer:

 WifiManager wifi = (WifiManager) getSystemService (Context.WIFI_SERVICE); if (wifi.getConnectionInfo().getNetworkId() != -1) {/* connected */} 

El método getNeworkId devuelve -1 sólo cuando no está conectado a una red;

Esto funciona para mí:

  ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); // Mobile State mobile = conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState(); // Wi-Fi State wifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState(); // And then use it like this: if (mobile == NetworkInfo.State.CONNECTED || mobile == NetworkInfo.State.CONNECTING) { Toast.makeText(Wifi_Gprs.this,"Mobile is Enabled :) ....",Toast.LENGTH_LONG).show(); } else if (wifi == NetworkInfo.State.CONNECTED || wifi == NetworkInfo.State.CONNECTING) { Toast.makeText(Wifi_Gprs.this,"Wifi is Enabled :) ....",Toast.LENGTH_LONG).show(); } else { Toast.makeText(Wifi_Gprs.this,"No Wifi or Gprs Enabled :( ....",Toast.LENGTH_LONG).show(); } 

Y añada este permiso:

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

En la nueva versión de Android

 private void getWifiInfo(Context context) { ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); Network[] networks = connManager.getAllNetworks(); if(networks == null || networks.length == 0) return; for( int i = 0; i < networks.length; i++) { Network ntk = networks[i]; NetworkInfo ntkInfo = connManager.getNetworkInfo(ntk); if (ntkInfo.getType() == ConnectivityManager.TYPE_WIFI && ntkInfo.isConnected() ) { final WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); final WifiInfo connectionInfo = wifiManager.getConnectionInfo(); if (connectionInfo != null) { // add some code here } } } } 

Y añadir la premisión también

Esta es una solución más fácil. Consulte la pregunta sobre el desbordamiento de la pila Comprobación de Wi-Fi activado o no en Android .

PS No olvide agregar el código al archivo manifest.xml para permitir el permiso. Como se muestra abajo.

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

Tratar

 wifiManager.getConnectionInfo().getIpAddress() 

Esto devuelve 0 hasta que el dispositivo tenga una conexión utilizable (en mi equipo, un Samsung SM-T280, Android 5.1.1).

Puede activar WIFI si no está activado de la siguiente manera: 1. Compruebe el estado WIFI contestado por @Jason Knight. 2. Si no está activado, activarlo, no olvide añadir permiso WIFI en el archivo de manifiesto

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

Su clase Java debe ser así

 public class TestApp extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //check WIFI activation ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); if (mWifi.isConnected() == false) { showWIFIDisabledAlertToUser(); } else { Toast.makeText(this, "WIFI is Enabled in your devide", Toast.LENGTH_SHORT).show(); } } private void showWIFIDisabledAlertToUser(){ AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); alertDialogBuilder.setMessage("WIFI is disabled in your device. Would you like to enable it?") .setCancelable(false) .setPositiveButton("Goto Settings Page To Enable WIFI", new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog, int id){ Intent callGPSSettingIntent = new Intent( Settings.ACTION_WIFI_SETTINGS); startActivity(callGPSSettingIntent); } }); alertDialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog, int id){ dialog.cancel(); } }); AlertDialog alert = alertDialogBuilder.create(); alert.show(); } 

}

  • ¿Cómo puedo configurar ProxySettings y ProxyProperties en la conexión Wi-Fi de Android usando Java?
  • SecurityException al obtener los resultados de la exploración Wifi
  • ¿Hay alguna manera de ser notificado cuando las redes wifi SSIS conocidas entran o salen del rango?
  • ¿Cómo puedo configurar ProxySettings y ProxyProperties en la conexión Wi-Fi de Android usando Java?
  • Android Lollipop - Hotspot WiFi setWifiApEnabled () obtener InvocationTargetException
  • ¿Puedo usar WiFi para transferir datos / mensajes entre dos teléfonos Android, no conectados a un enrutador?
  • ¿Cómo me conecto a una red Wi-Fi específica en Android mediante programación?
  • Cómo puedo determinar la velocidad de Internet en mi aplicación Android
  • Android M: no se puede quitar Wi-Fi AP programáticamente
  • WifiManager.is5GHzBandSupported () mentir?
  • Thread colgar en WifiManager.enableNetwork ()
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.