Android.net.wifi.STATE_CHANGE: no se activa en Wifi desconectar
¿Es normal tener una intención de difusión con la acción NETWORK_STATE_CHANGED_ACTION
(cuyo valor constante es android.net.wifi.STATE_CHANGE
) cuando una conexión Wifi vuelve a subir? Es decir, no obtengo este intento cuando se está desconectando Wifi.
ACTUALIZACIÓN: Estoy principalmente interesado en> = 2.2 Froyo
- ¿Cómo puedo ver si Wi-Fi está conectado en Android?
- ¿Por qué WifiConfiguration.BSSID siempre es nulo?
- Thread colgar en WifiManager.enableNetwork ()
- Cómo determinar mediante programación si android está conectado a wifi?
- Determine el ancho de banda de conexión de red (velocidad) wifi y datos móviles
- Cómo obtener la dirección IP del router wifi conectado en android mediante programación?
- Android WifiLock WIFI_MODE_SCAN_ONLY no funciona
- WifiManager devuelve BSSID 00: 00: 00: 00: 00: 00
- Exploración de señales wifi sólo en banda 2.4Ghz
- Establecer IP estática y pasarela programáticamente en Android 6.x (Marshmallow)
- Problema con WifiManager.calculateSignalLevel (RSSI, 5)
- Android Lollipop - Hotspot WiFi setWifiApEnabled () obtener InvocationTargetException
- Android Wi-Fi Direct leer la intensidad de la señal rssi
Public static final Cadena SUPPLICANT_CONNECTION_CHANGE_ACTION
Desde: API Nivel 1
Acción de intención de difusión que indica que se ha establecido una conexión con el solicitante (y ahora es posible realizar operaciones Wi-Fi) o se ha perdido la conexión con el solicitante. Un extra proporciona el estado de conexión como un booleano, donde significa verdadero CONECTADO.
Ver también
EXTRA_SUPPLICANT_CONNECTED
Valor constante: "android.net.wifi.supplicant.CONNECTION_CHANGE"
En la API de android dice que no es una buena idea comprobar STATE_CHANGE para conectividad de red y en su lugar debe utilizar SUPPLICANT_CONNECTION_CHANGE_ACTION. Esto notará un establecimiento a una red wifi, y la desconexión de una red wifi. No sé si esto podría ayudarte, pero espero que sí. ENLAZAR
Tuve una necesidad similar en mi proyecto y terminé teniendo que usar ambos.
La acción android.net.wifi.supplicant.CONNECTION_CHANGE envía una difusión cuando la red está conectada, pero normalmente antes de que el dispositivo tenga una dirección IP, necesité la acción android.net.wifi.STATE_CHANGE para ello.
La acción android.net.wifi.STATE_CHANGE recibe una transmisión en desconexión sólo si el dispositivo se está desconectando de una red, pero el wifi todavía está habilitado (cuando el hotspot se encuentra fuera del rango, por ejemplo)
Por lo tanto, debe poner ambas acciones para el receptor en el manifiesto:
<receiver android:name="net.moronigranja.tproxy.WifiReceiver"> <intent-filter> <action android:name="android.net.wifi.STATE_CHANGE"/> <action android:name="android.net.wifi.supplicant.CONNECTION_CHANGE" /> </intent-filter> </receiver>
Y se pone un si para comprobar qué acción se está llamando en la intención. Aquí está el método onReceive del BroadcastReceiver en mi código:
public void onReceive(Context c, Intent intent) { if(intent.getAction().equals(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION)){ boolean connected = intent.getBooleanExtra(WifiManager.EXTRA_SUPPLICANT_CONNECTED, false); if(!connected) { //Start service for disconnected state here } } else if(intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)){ NetworkInfo netInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); if( netInfo.isConnected() ) { //Start service for connected state here. } } }