1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

broadcast, das Wechsel des WLAN-Netzes anzeigt

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von tilmsch, 17.02.2012.

  1. tilmsch, 17.02.2012 #1
    tilmsch

    tilmsch Threadstarter Neuer Benutzer

    Beiträge:
    12
    Erhaltene Danke:
    1
    Registriert seit:
    13.02.2012
    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
     
  2. sixi, 18.02.2012 #2
    sixi

    sixi Erfahrener Benutzer

    Beiträge:
    237
    Erhaltene Danke:
    64
    Registriert seit:
    20.01.2009
  3. tilmsch, 21.02.2012 #3
    tilmsch

    tilmsch Threadstarter Neuer Benutzer

    Beiträge:
    12
    Erhaltene Danke:
    1
    Registriert seit:
    13.02.2012
    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.
     
  4. the_alien, 21.02.2012 #4
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Nein, für An und Aus ist WIFI_STATE_CHANGED_ACTION zuständig.
     
  5. tilmsch, 22.02.2012 #5
    tilmsch

    tilmsch Threadstarter Neuer Benutzer

    Beiträge:
    12
    Erhaltene Danke:
    1
    Registriert seit:
    13.02.2012
    hallo Sixi,

    also, ich war mit NETWORK_STATE_CHANGED_ACTION irgentwie nicht erfolgreich, aber mit android.net.conn.CONNECTIVITY_CHANGE klappt's.
     
  6. sixi, 23.02.2012 #6
    sixi

    sixi Erfahrener Benutzer

    Beiträge:
    237
    Erhaltene Danke:
    64
    Registriert seit:
    20.01.2009
    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>
     
    tilmsch bedankt sich.
  7. tilmsch, 23.02.2012 #7
    tilmsch

    tilmsch Threadstarter Neuer Benutzer

    Beiträge:
    12
    Erhaltene Danke:
    1
    Registriert seit:
    13.02.2012
    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!
     

Diese Seite empfehlen