6

Me he registrado en ConnectivityManager.CONNECTIVITY_ACTION BroadcastReceiver, para recibir eventos de estado de la red, pero mi función onReceive no se llama cuando enciendo o apago mi conexión wifi.No se pueden recibir eventos relacionados con la red

Como se mencionó en los documentos, este es un Receptor de transmisión adhesiva que se dispara cuando nos registramos para ello.

Pero no recibo ningún evento en mi función onReceive cuando me registro para este receptor, ¿cuál podría ser la causa?

En mi archivo Manifest, tengo todos los permisos para acceder a las conexiones de Internet/Red/Wifi y sus estados.

estoy registrando con esta intención usando siguiente código:

registerReceiver(mNetworkStateReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); 

En mi Logcat, consigo error siguiente registro de mensajes para este receptor de radiodifusión:

01-01 00:05:29.804: ERROR/WifiHW(1305): Unable to open connection to supplicant on "/data/system/wpa_supplicant/wlan0": Connection refused 

¿Cuál podría ser la causa? ¿Hay alguna forma de averiguar si BroadcastReceiver está registrado correctamente o no?

Gracias.

+0

¿Ve el mismo problema si registra el receptor a través de su manifiesto? ¿Eres conexión wifi utilizable para la transmisión de datos? ¿Es posible publicar el código que está utilizando en 'onReceive()' para 'mNetworkStateReceiver'? –

+0

¡Nunca intenté registrarlo a través del archivo de manifiesto, lo intentaré primero! – User7723337

+0

puede considerar otorgar recompensa. De lo contrario va en vano – Sameer

Respuesta

4

Esto funciona para mí:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

<receiver android:name=".receiver.ConnectivityReceiver"> 
    <intent-filter> 
     <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
    </intent-filter> 
</receiver> 

Código:

public class ConnectivityReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.d(ConnectivityReceiver.class.getSimpleName(), "action: " 
       + intent.getAction()); 
    } 
} 

y no se olvide de registrar todos los permisos de red.

+0

Es suficiente ' ' ¡correcto! o tenemos que agregar otro permiso? – Shravan

+0

¿Puedes echar un vistazo a este http://stackoverflow.com/q/30062487/3742271? – Shravan

3

probarlo utilizando el archivo de manifiesto

<receiver android:name=".MyNetworkStateReceiver" > 
    <intent-filter > 
     <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
    </intent-filter> 
</receiver> 

la clase MyNetworkStateReceiver debe extenderse BroadcastReceiver

+0

Lo estoy haciendo a través del código JAVA, no es necesario agregar esto en el archivo de manifiesto. – User7723337

0

Parece que una cuestión de nivel inferior - el error de buscar en Google revela múltiples foros ROM piratería y sus disfunciones wifi. ¿Qué estás probando? Pruebe probar en otro dispositivo o emulador. (Supongo que usted ha tratado de reiniciar el suyo :))

Además, asegúrese de cancelar el registro del receptor cuando su actividad/servicio se destruye (tal vez esto tiene algo que ver con el error de conexión)

PS Te conozco dijo que sí, pero aún así, vuelva a verificar que tiene

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

en su manifiesto.

0

También puede intentar obtener permisos para Internet, WIFI y bloqueo de multidifusión, intente agregarlos a los permisos.

<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/> 

estoy obligado a utilizar estas permiso para una en la solicitud de la casa que he construido que utiliza no sólo la conexión Wi-Fi para enviar y recibir datos de la red, pero cualquier tipo de adaptador de red (LAN, radio) que puedo filtrada a través del SDK en C (el dispositivo debe estar rooteado). Pero al usar estos permisos no tengo problemas.

Cuestiones relacionadas