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 obtener la dirección IP del router wifi conectado en android mediante programación?
- Obtener la dirección MAC del dispositivo: cuando el wifi está desactivado
- ¿Qué intervalo debo usar entre cada exploración WiFi en Android?
- Exploración de señales wifi sólo en banda 2.4Ghz
- Android Wi-Fi Direct leer la intensidad de la señal rssi
- Thread colgar en WifiManager.enableNetwork ()
- ¿Cómo puedo ver si Wi-Fi está conectado en Android?
- ¿Cómo puedo configurar ProxySettings y ProxyProperties en la conexión Wi-Fi de Android usando Java?
- Android WifiLock WIFI_MODE_SCAN_ONLY no funciona
- Cómo conectarse a un elemento Wifi ScanResult
- Compruebe si la red ScanResult ya está configurada (existe en la lista getConfiguredNetworks ())
- Android prueba la conexión wifi programáticamente
- Cómo crear WPA personalizado Hotspot con ssid y contraseña en android?
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. } } }