Question

Je suis inscrit à ConnectivityManager.CONNECTIVITY_ACTION BroadcastReceiver, pour recevoir des événements d'état du réseau, mais ma fonction onReceive n'est pas appelé quand je tourne ou désactiver ma connexion wifi.

Comme mentionné dans la documentation, c'est un Post-it Diffusion récepteur qui est déclenché lorsque nous enregistrons pour elle.

Mais je ne reçois pas d'événements dans ma fonction onReceive quand je vous inscrire à ce récepteur, ce qui pourrait être la cause?

Dans mon fichier Manifest, j'ai toutes les autorisations pour accéder à des connexions Internet / Réseau / Wifi et leurs états.

J'enregistre avec cette intention en utilisant le code suivant:

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

Dans mon Logcat, je reçois la suite du message d'erreur registre pour ce récepteur de diffusion:

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

Quelle pourrait être la cause? Y at-il moyen de savoir si BroadcastReceiver est enregistré correctement ou non?

Merci.

Était-ce utile?

La solution

Cela fonctionne pour moi:

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

Code:

public class ConnectivityReceiver extends BroadcastReceiver {

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

et ne pas oublier l'enregistrement toutes les autorisations réseau.

Autres conseils

essayer en utilisant le fichier manifest

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

la MyNetworkStateReceiver de classe doit étendre BroadcastReceiver

On dirait un problème de niveau inférieur - googler l'erreur révèle plusieurs forums de piratage ROM et leurs dysfonctionnements wifi. Que fais-tu tester sur? Essayez de tester sur un autre appareil ou un émulateur. (Je suppose que vous avez essayé de redémarrer le vôtre :))

De plus, assurez-vous désinscription le récepteur lorsque votre activité / le service est détruit (peut-être ce qui a quelque chose à voir avec l'erreur de connexion)

PS Je sais que vous avez dit que vous faites, mais toujours Vérifiez que vous avez

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

dans votre manifeste.

Vous pouvez également essayer d'obtenir des autorisations pour l'Internet, WIFI et verrouillage Multicast, essayez d'ajouter ces derniers aux autorisations.

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

Je suis tenu d'utiliser ces autorisations pour une dans la demande de la maison, j'ai construit que les usages non seulement le WiFi pour envoyer et recevoir des données de réseau, mais tout type de carte réseau (LAN, RADIO) que je peux filtrée à travers le SDK C (appareil doit être ancrée). Mais l'utilisation de ces autorisations, je n'ai aucun problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top