Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


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.

  • La aplicación nunca recibe RSSI_CHANGED_ACTION
  • Conexión WiFi de Android mediante programación
  • ADB, Wifi y Eclipse: ¿cómo puedo configurar?
  • Android wifi permiso
  • ¿Puede Android hacer redes ad-hoc peer-to-peer?
  • Comprobación de Wi-Fi activado o no en Android
  • Datos de enlace descendente de la ruta de Android vía WiFi y datos de enlace ascendente a través de la red móvil
  • ¿Cómo puedo llamar a la pantalla de configuración Wi-Fi de mi aplicación mediante Android
  • 4 Solutions collect form web for “Obtener SSID cuando WIFI está conectado”

    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.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.