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.

  • No se puede conectar a Android a través de ADB a través de wifi - ¿Necesito acceso root?
  • ¿Es posible intercambiar mensajes entre 2 dispositivos Android a través de wifi?
  • hostapd & rpbi portal cautivo
  • Conecte Android a la red WiFi Enterprise EAP (PEAP)
  • Cómo enviar un archivo de android a la impresora wifi programatically e imprimir el archivo?
  • Conéctese a wifi sin Internet mediante programación
  • LocationManager devuelve la antigua ubicación en caché "Wifi" con la marca de hora actual
  • Obtener estadísticas de tráfico wifi android
  • ¿Por qué la pila SIP nativa incluida en Android 2.3 no funciona sobre 3g?
  • Wi-Fi tethering - cómo obtener la lista de clientes conectados
  • Android / Java cómo saber el tipo de radio de wifi conectado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.