Pregunta

Me he registrado en ConnectivityManager.CONNECTIVITY_ACTION Broadcastreceiver, para recibir eventos de estado de red, pero mi onReceive La función no se llama cuando enciendo o apagando mi conexión WiFi.

Como se menciona en los documentos, este es un receptor de transmisión pegajoso que se dispara cuando nos registramos para ello.

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

En mi archivo manifiesto, tengo todos los permisos para acceder a las conexiones de Internet/red/wifi y sus estados.

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

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

En mi LogCat, recibo el siguiente mensaje de error para este receptor de transmisió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.

¿Fue útil?

Solución

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 olvide registrar todo el permiso de red.

Otros consejos

Pruébelo usando el archivo manifiesto

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

la clase MyNetworkStateReceiver Debería extenderse BroadcastReceiver

Parece un problema de nivel inferior: Google el error revela múltiples foros de piratería ROM y sus mal funcionamiento WiFi. ¿En qué estás probando? Intente probar en otro dispositivo o un emulador. (Supongo que has intentado reiniciar el tuyo :))

Además, asegúrese de no registrar el receptor cuando su actividad/servicio sea destruido (tal vez esto tenga algo que ver con el error de conexión)

PD: Sé que dijiste que lo hiciste, pero aún así verifica doble

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

en tu manifiesto.

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"/>

Debo usar estos permisos para una aplicación interna que he creado que usa no solo el WiFi para enviar y recibir datos de red, sino cualquier tipo de adaptador de red (LAN, radio) que pueda filtrar a través del SDK en C (dispositivo debe estar enraizado). Pero usando estos permisos no tengo problemas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top