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" /> 
  • Android - Extraer texto de SMS
  • Obtener acceso a SQL en Broadcastreceiver
  • ¿Cómo cancelar la notificación de difusión? (Para una emisión no ordenada)
  • C2DMBroadcastReceiver's onReceive no está ejecutando (Para Registro)
  • Android, onReceive en BroadCastReceiver se llama varias veces
  • Son varios receptores de radiodifusión legal en android?
  • Android External App Install (en la tarjeta SD), vuelva a cargar las alarmas del alarmmanager al re-montar a través del receptor
  • Cómo detectar los eventos de MediaPlayer de youtube desde un servicio
  • Cómo ejecutar la aplicación en segundo plano en android?
  • Android: OnBootReceiver: El receptor exportado no requiere permiso
  • Receptor de difusión para llamadas perdidas en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.