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.
- Establecer la configuración de IP de Android, DNS, GATEWAY mediante programación
- Supervisión del WiFi en el dispositivo Android
- Obtener la dirección de difusión wifi en Android wifi hotspot
- ¿Es posible forzar el tráfico de red a través de Wifi o de la red TMobile?
- Android ESC / POS Impresión sobre WiFi
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.
- Cómo obtener el estándar wifi
- Wi-Fi Directo y "normal" Wi-Fi - ¿Diferentes MAC?
- Conecta el iPhone a Android Wifi Direct soft AP
- Android Scan para redes Wifi
- Android 6.0 comprueba si está conectado a una red Wi-Fi (sin Internet)
- Descubrimiento del servicio directo Wifi de Android
- ¿Puedo encontrar la dirección MAC de mi punto de acceso en Android?
- ¿Cómo puedo imprimir a través de una impresora WiFi en Android mediante una conexión Wi-Fi Direct?
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.
- El botón de Android selecciona y presiona dibujable
- Phonegap – automáticamente incluyendo cordova correcto