Frage

Ich habe mich registriert ConnectivityManager.CONNECTIVITY_ACTION Rundfunkveranstalter für den Empfang von Network State -Ereignissen, aber meine onReceive Die Funktion wird nicht aufgerufen, wenn ich meine WLAN -Verbindung ein- oder ausschaltete.

Wie in den Dokumenten erwähnt, ist dies ein Sticky -Broadcast -Empfänger, der beim Registrieren dafür entlassen wird.

Aber ich bekomme keine Veranstaltungen in meinem onReceive Funktion, wenn ich mich für diesen Empfänger registriere, was könnte die Ursache sein?

In meiner Manifest -Datei habe ich alle Berechtigungen für den Zugriff auf Internet-/Netzwerk-/WLAN -Verbindungen und deren Zustände.

Ich registriere mich mit dieser Absicht mit dem folgenden Code:

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

In meinem Logcat erhalte ich das folgende Fehlermeldungsregister für diesen Broadcast -Empfänger:

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

Was könnte die Ursache sein? Gibt es eine Möglichkeit, herauszufinden, ob Rundfunkstock ordnungsgemäß registriert ist oder nicht?

Vielen Dank.

War es hilfreich?

Lösung

Das funktioniert für mich:

<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());
  }
}

Und vergessen Sie nicht, die gesamte Netzwerkgenehmigung zu registrieren.

Andere Tipps

Versuchen Sie es mit der Manifest -Datei

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

die Klasse MyNetworkStateReceiver sollte sich ausdehnen BroadcastReceiver

Sieht aus wie ein Problem mit niedrigerer Ebene - das Googeln des Fehlers zeigt mehrere ROM -Hacking -Foren und ihre WLAN -Fehlfunktionen. Was testest du? Versuchen Sie, auf einem anderen Gerät oder einem Emulator zu testen. (Ich nehme an, Sie haben versucht, Ihre neu zu starten :))

Stellen Sie außerdem sicher, dass Sie den Empfänger nicht registrieren, wenn Ihre Aktivität/Ihr Dienst zerstört wird (möglicherweise hat dies etwas mit dem Verbindungsfehler zu tun).

PS Ich weiß, dass du gesagt hast, dass du es tust, aber noch dusche, du hast du hast du hast du hast

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

in deinem Manifest.

Sie können auch versuchen, Berechtigungen für das Internet-, WLAN- und Multicast -Sperre zu erhalten, und diese zu den Berechtigungen hinzuzufügen.

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

Ich muss diese Genehmigung für eine in Hausanwendung erstellte In -Haus -Anwendung verwenden, die nicht nur das WLAN zum Senden und Empfangen von Netzwerkdaten, sondern auch jede Art von Netzwerkadapter (LAN, Radio) verwendet, die ich durch das SDK in C (Gerät) filtern kann muss verwurzelt sein). Aber mit diesen Berechtigungen habe ich keine Probleme.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top