Obtener SSID cuando WIFI está conectado

Estoy tratando de obtener el SSID de la red WIFI cuando mi dispositivo Android está conectado a WIFI.

He registrado un BroadcastReceiver escuchando android.net.wifi.supplicant.CONNECTION_CHANGE . Recibo la notificación cuando WIFI se desconecta o se vuelve a conectar. Desafortunadamente, no puedo obtener el SSID de la red.

Estoy usando el siguiente código para encontrar el SSID:

 WifiManager wifiManager = (WifiManager) context.getSystemService(context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); String ssid = wifiInfo.getSSID(); 

En lugar del SSID, obtengo la cadena <unknown ssid> nuevo.

Estos son los permisos en el manifiesto (he agregado ACCESS_NETWORK_STATE sólo para comprobar, no lo necesito)

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

¿Por qué pasó esto? ¿Cómo puedo obtener el SSID real? ¿Es la emisión encendida temprano, antes de que se establezca la conexión? ¿Hay otra emisión que debo escuchar? Sólo estoy interesado en las conexiones WIFI, no en las conexiones 3G.

Actualización: Acabo de comprobar, wifiInfo.getBSSID() devuelve null.

Escucho WifiManager.NETWORK_STATE_CHANGED_ACTION en un receptor de difusión

 if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals (action)) { NetworkInfo netInfo = intent.getParcelableExtra (WifiManager.EXTRA_NETWORK_INFO); if (ConnectivityManager.TYPE_WIFI == netInfo.getType ()) { 

Comprobar si hay netInfo.isConnected (). Entonces puedo usar

 WifiManager wifiManager = (WifiManager) getSystemService (Context.WIFI_SERVICE); WifiInfo info = wifiManager.getConnectionInfo (); String ssid = info.getSSID(); 

Si no quieres hacer Broadcast Receiver, entonces prueba simple

 WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo; wifiInfo = wifiManager.getConnectionInfo(); if (wifiInfo.getSupplicantState() == SupplicantState.COMPLETED) { ssid = wifiInfo.getSSID(); } 

Recuerde que cada vez que el usuario desconecta o se conecta a un nuevo SSID o cualquier cambio de estado wifi, entonces usted necesita para inicializar WifiInfo es decir wifiInfo = wifiManager.getConnectionInfo();

Manera simple y más fácil.

 public String getWifiName(Context context) { WifiManager manager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); if (manager.isWifiEnabled()) { WifiInfo wifiInfo = manager.getConnectionInfo(); if (wifiInfo != null) { DetailedState state = WifiInfo.getDetailedStateOf(wifiInfo.getSupplicantState()); if (state == DetailedState.CONNECTED || state == DetailedState.OBTAINING_IPADDR) { return wifiInfo.getSSID(); } } } return null; } 

Compruebe a través de NetworkInfo para el tipo wifi si está conectado. Y luego use wifiinfo getSSid (). Es posible que desee eliminar las barras dobles de returnID SSID

https://play.google.com/store/apps/details?id=com.connect.freewifi

Debe consultar esta aplicación y la API del desarrollador en http://developer.android.com/reference/android/net/wifi/WifiInfo.html.

Le ayudará con su tarea.

  • ¿Cómo puedo leer mediante programación contraseñas wifi en android
  • Android cómo saber el uso total de datos de Internet por día a través de wifi y móvil
  • Servidor y cliente en un dispositivo con WiFi habilitado
  • ¿Por qué Android no tiene una dirección MAC para 3g cuando hace iOS?
  • Wi-Fi Android punto de acceso - sin Internet
  • Java.net.SocketException: recvfrom falló: ECONNRESET (Conexión restablecida por pares) Más de WIFI
  • ¿Por qué la pila SIP nativa incluida en Android 2.3 no funciona sobre 3g?
  • ¿Puede una red bluetooth o wifi (spp) perder alguna vez los bytes o haber corrompido?
  • Cómo comunicarse con la cámara habilitada para wifi
  • Wifi conexión múltiple directa ad-hoc
  • ¿Cómo compartir programaticamente la pantalla del dispositivo Android con otra vía wifi? (No captura de pantalla)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.