broadcast, das Wechsel des WLAN-Netzes anzeigt

T

tilmsch

Neues Mitglied
1
Hallo,
ich arbeite gerade en einem Widget, das, sobald sich mein Telefon mit einem bestimmten WLAN verbindet, auf statische IP-Adresse umschaltet. Andererseits soll, sobald mit einem anderen Netz verbunden wird, wieder auf DHCP umgeschaltet wird.
Mein Problem dabei: Ich kann kein Broadcast finden, auf den mein Widget "listen" koennte, um herauszufinden, dass sich das Telefon, z.B. wegen Standortwechsel, mit einem neuen WLAN verbindet.
Zuerst dachte ich, dass "android.net.wifi.NETWORK_IDS_CHANGED" der gesuchte Braodcast ist, der bleibt bei WLAN-Wechsel allerdings stumm.
Hat jemand eine bessere Idee?
Vorab vielen Dank!
Til
 
Hallo Sixi,

danke fuer den Vorschlag, allerdings zeigt der Broadcast NETWORK_STATE_CHANGED_ACTION nur, dass WLAN an- bzw. ausgeschaltet wurde. Mich interessiert allerdings das Ereigniss, wenn mein Phone wegen eines Standortwechsels auf ein anderes Netz umschaltet.
 
tilmsch schrieb:
Hallo Sixi,

danke fuer den Vorschlag, allerdings zeigt der Broadcast NETWORK_STATE_CHANGED_ACTION nur, dass WLAN an- bzw. ausgeschaltet wurde. Mich interessiert allerdings das Ereigniss, wenn mein Phone wegen eines Standortwechsels auf ein anderes Netz umschaltet.

Nein, für An und Aus ist WIFI_STATE_CHANGED_ACTION zuständig.
 
hallo Sixi,

also, ich war mit NETWORK_STATE_CHANGED_ACTION irgentwie nicht erfolgreich, aber mit android.net.conn.CONNECTIVITY_CHANGE klappt's.
 
Jetzt hast du's geschafft und ich hab angefangen zu zweifeln :p

Bei mir tut der android.net.wifi.STATE_CHANGE exakt was er soll. Unten der Code.

Logcat:
Code:
02-23 11:44:49.626: D/wifitest(22875): New NetworkState: false
02-23 11:44:49.916: D/wifitest(22875): New NetworkState: true
02-23 11:44:49.971: D/wifitest(22875): Wifi SSID: meinwlan

Code:
public class WifiChangedReceiver extends BroadcastReceiver {

	private WifiManager mWifiManager;

	@Override
	public void onReceive(Context context, Intent intent) {
		mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);

		NetworkInfo networkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);

		Log.d("wifitest", "New NetworkState: " + networkInfo.isConnected());

		if (networkInfo.isConnected()) {
			Log.d("wifitest", "Wifi SSID: " + mWifiManager.getConnectionInfo().getSSID());
		}
	}
}

Manifest:
Code:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="de.heroxit.wificonnecttest"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="4" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
...
        <receiver android:name="WifiChangedReceiver">
            <intent-filter>
                <action android:name="android.net.wifi.STATE_CHANGE"/>
            </intent-filter>
        </receiver>
    </application>
</manifest>
 
  • Danke
Reaktionen: tilmsch
OK, das war ein Anfaengerfehler meinerseits:

ich hatte in meiner Manifest-Datei einen intent-Filter auf "android.net.wifi.STATE_CHANGED", statt "android.net.wifi.STATE_CHANGE" definiert...

Jetzt klappt's bei mir auch, wie von Dir vorgeschlagen.

Dank & Gruss!
 

Ähnliche Themen

A
Antworten
1
Aufrufe
641
swa00
swa00
G
Antworten
8
Aufrufe
1.196
gnome2012
G
Gemini-Media
Antworten
1
Aufrufe
1.840
swa00
swa00
Zurück
Oben Unten