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?

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.

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" /> 
  • BroadcastReceiver no se llama cuando la pantalla está bloqueada en Android
  • Llamar un método de actividad de BroadcastReceiver en Android
  • SMS recibidos en mi aplicación de SMS y en Hangouts, aunque llamo a abortBroadcast ()
  • Android: ¿Presentar una notificación durante una llamada?
  • Cuando los incendios de Android ACTION_BATTERY_LOW
  • ¿Por qué mi aplicación no está en la lista de aplicaciones para abrir el archivo txt?
  • Seguimiento de la duración de una llamada telefónica
  • ¿Es posible definir un receptor de difusión como una clase interna en el archivo de manifiesto?
  • ¿Qué permiso debe requerir mi receptor SMS de manejo de entrada del sistema?
  • ¿Cómo asegurarse de que AlarmManager se dispara incluso si la aplicación Android está cerrada?
  • AlarmManager dentro de BroadcastReceiver cuando BOOT_COMPLETED
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.