BroadcastReceiver declarado en manifesto no está recibiendo la transmisión
He intentado registrar un Wifi BroadcastReceiver para obtener el estado wifi cuando cambia. Pero hasta ahora no tengo suerte de recibir la emisión.
<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <receiver android:name=".WifiReceiver" > <intent-filter> <action android:name="android.net.wifi.WifiManager.WIFI_STATE_CHANGED_ACTION" /> <action android:name="android.intent.action.PHONE_STATE" /> </intent-filter> </receiver> //activity declaration here... </application>
¿Ustedes saben cómo registrar el BraodcastReceiver en el manifiesto?
- Android - Cómo iniciar una aplicación en / sdcard después del arranque
- Cómo determinar el remitente de Broadcast Intent
- BroadcastReceiver - onReceive Not Being Called
- Android: BroadcastReceiver cuando inserta / extrae el dispositivo USB en / desde un puerto USB
- Difusión cuando se captura la captura de pantalla en Android 4.0?
No quiero registrarlo en actividades porque quiero monitorear el wifi cuando hay cambios en el estado wifi si mi aplicación se está ejecutando o no.
Esta es mi clase BroadcastReceiver:
public class WifiReceiver extends BroadcastReceiver { private final String TAG = "WifiReceiver"; @Override public void onReceive(Context context, Intent intent) { int wifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN); String wifiStateText = "No State"; switch (wifiState) { case WifiManager.WIFI_STATE_DISABLING: wifiStateText = "WIFI_STATE_DISABLING"; break; case WifiManager.WIFI_STATE_DISABLED: wifiStateText = "WIFI_STATE_DISABLED"; break; case WifiManager.WIFI_STATE_ENABLING: wifiStateText = "WIFI_STATE_ENABLING"; break; case WifiManager.WIFI_STATE_ENABLED: wifiStateText = "WIFI_STATE_ENABLED"; break; case WifiManager.WIFI_STATE_UNKNOWN: wifiStateText = "WIFI_STATE_UNKNOWN"; break; default: break; } MyLog.d(TAG, "onReceive Broadcast > WiFiState: " + wifiStateText); MyLog.d(TAG, "onReceive Broadcast > Time: " + new Date()); } }
Realmente espero obtener ayuda. Gracias por adelantado.
- ¿Por qué no funciona LocalBroadcastManager en lugar de Context.registerReceiver?
- ¿Enviar una difusión ordenada localmente (dentro de mi proceso)?
- Suprimir / bloquear BroadcastReceiver en otra aplicación
- Utilizar un receptor de broadcast / broadcast para enviar mensajes de un servicio a una actividad
- deshabilitar el paquete que instala mediante programación
- ¿Es el contexto de la aplicación siempre el mismo sin importar la clase?
- Android: Registrar el receptor en la biblioteca
- Cómo repetir la notificación diaria en el tiempo específico en androide a través del servicio de fondo
Su receptor en el manifiesto debe verse así
<receiver android:name=".WifiReceiver" > <intent-filter> <action android:name="android.net.wifi.WIFI_STATE_CHANGED" /> </intent-filter> </receiver>
También puede ser necesario el siguiente permiso
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<receiver android:name=".WifiReceiver" > <intent-filter android:priority="100" > <action android:name="android.net.wifi.WIFI_STATE_CHANGED" android:enabled="true" /> </intent-filter> </receiver>
Introduzca la prioridad alta y también activó el flag como true
Sólo porque la emisión fue enviada con la bandera Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT, significa que su aplicación debe registrar este receptor antes de arrancar android, que sólo pueden ser los servicios del sistema.
Creo que ha registrado el receptor de esta manera:
<receiver android:name=".WiFiReciever"> <intent-filter> <action android:name="class name with package" /> <data android:scheme="myscheme" /> </intent-filter> </receiver>
Lo mejor que funcionó para mí:
Manifiesto:
<receiver android:name="com.AEDesign.communication.WifiReceiver"> <intent-filter android:priority="100"> <action android:name="android.net.wifi.STATE_CHANGE" /> </intent-filter> </receiver>
WifiReceiver Clase:
public class WifiReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); if(info != null) { if(info.isConnected()) { //Do your work. //To check the Network Name or other info: WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); String ssid = wifiInfo.getSSID(); } } } }
Permisos:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
Todo esto es receptor de radiodifusión relacionado con la conexión a Internet
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> <action android:name="android.net.wifi.WIFI_STATE_CHANGED" /> <action android:name="android.net.wifi.STATE_CHANGE" />
- Cambiar el color de un buscador en onProgressChanged
- NullPointerException en OnClickListener del botón