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 AlarmManager en un Broadcastreceiver
- Inicio de la aplicación en el arranque completado
- Receptor de radiodifusión dinámica en fragmento
- Widget onUpdate llamado cuando se inicia la Actividad de configuración
- ¿Cómo puedo configurar una alerta que aparezca en todo momento?
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.
- BadParcelableException - Error de BroadcastReceiver intentado
- Comunicación entre BroadcastReceiver y Activity - android
- Boot / ScreenOn Broadcast Receiver no funciona
- BroadcastReceiver para SMS de varias partes
- PendingIntents mantiene el mismo objeto en caché
- Cómo corregir Advertencia de pelusa de SMS BroadcastReceiver sin protección
- ¿Qué es más eficiente Broadcast Receiver o Handler?
- ¿Cómo obtener el número de teléfono de una llamada entrante?
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