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

Probleme beim hinzufügen von WLANs

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von määx, 19.01.2010.

  1. määx, 19.01.2010 #1
    määx

    määx Threadstarter Neuer Benutzer

    Beiträge:
    5
    Erhaltene Danke:
    0
    Registriert seit:
    19.01.2010
    Hey zusammen,
    habe ein kleines App, dass alle WLANs scannt und diese dann in die Liste Konfigurierter Netzwerke aufnehmen soll. Leider klappt das nicht so ganz:
    Code:
    WifiManager wifi;
    [...]
    wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
    [...]
    wifi.startScan();
            try{
                WifiConfiguration wifi_config = new WifiConfiguration();
                List<ScanResult> available_networks = wifi.getScanResults();
                for(ScanResult network : available_networks) {
                    text_networks.append("\n" + network.SSID);
                    wifi_config = new WifiConfiguration();
                    wifi_config.SSID = network.SSID;
                    wifi_config.SSID = network.SSID;
                    wifi_config.BSSID = network.BSSID;
                    wifi_config.hiddenSSID = false;
                    wifi_config.priority = 1000;
                    wifi_config.status = 1; //DISABLED
                    wifi_config.allowedKeyManagement.set(KeyMgmt.NONE);
                    internal_net_id = wifi.addNetwork( wifi_config );
                    text_networks.append(" ID: " + internal_net_id);
                }
            }catch (Exception e){
                System.out.println("ERROR");
            }
    
    Es werden alle Netzwerke aufgelistet, jedoch liefert addNetwork immer -1 zurück! Wenn ich alle Konfigurations-Einstellung auskommentiere liefert addNetwork auch eine ID! Aber das ist ja nicht Sinn der Sache ;)
    Also jemand eine Idee woran das liegen könnte?
    Bin für jede Hilfe dankbar
    Määx
     
  2. garak, 20.01.2010 #2
    garak

    garak Ehrenmitglied

    Beiträge:
    8,270
    Erhaltene Danke:
    4,795
    Registriert seit:
    12.12.2009
    Da du "wifi_config" außerhalb der Schleife deklarierst, überschreibst du das Objekt mit jedem Schleifendurchgang. Dadurch kann das "addNetwork" nicht funktionieren.

    Versuche doch mal folgendes:
    Code:
    for(ScanResult network : availableNetworks) {
      WifiConfiguration wifiConfig = new WifiConfiguration();
      wifiConfig.SSID = network.SSID;
      ..
      int netId = wifi.addNetwork(wifiConfig);
      textNetworks.append(" ID: ");
      textNetworks.append(netId);
    }
    
    Achja, es ist ziemlich zweckfrei einen StringBuilder mit "append("ID = " + String)" zu füttern, da du damit zwangsläufig noch einen StringBuilder erzeugst, denn Java verwendet nämlich für das zusammenführen von Strings immer einen StringBuilder.

    Gruß
    Chris
     
  3. määx, 21.01.2010 #3
    määx

    määx Threadstarter Neuer Benutzer

    Beiträge:
    5
    Erhaltene Danke:
    0
    Registriert seit:
    19.01.2010
    danke, aber das hat leider nicht geholfen!
    Hast du vll noch eine Idee? bin echt verzweifelt...
     
  4. garak, 23.01.2010 #4
    garak

    garak Ehrenmitglied

    Beiträge:
    8,270
    Erhaltene Danke:
    4,795
    Registriert seit:
    12.12.2009
    So, jetzt habe ich mich mal in WiFi eingelesen.
    Dein Problem besteht darin, dass "wifi.addNetwork( wifi_config );" als ID -1 zurückliefert. Dies lässt darauf schließen, dass die Angaben, die du in "wifi_config" gemacht hast, falsch sind.
    Mein Vorschlag: die Parameter einzeln wegzulassen bzw. abzuändern bis du den Wert gefunden hast, der den Fehler verursacht.

    Gruß
    Chris
     
  5. määx, 23.01.2010 #5
    määx

    määx Threadstarter Neuer Benutzer

    Beiträge:
    5
    Erhaltene Danke:
    0
    Registriert seit:
    19.01.2010
    Hey,
    danke für den Tipp! Also es liegt wohl an:
    Code:
    wifi_config.SSID = network.SSID;
    Mit:
    Code:
    wifi_config.SSID = "ab";
    funktioniert das ganze - ersetzte ich "ab" jedoch durch "abc" kommt wieder -1 zurück!

    Irgendwie scheint es so, alsob ich der SSID nur zwei Zeichen übergeben kann!
    Mache ich irgendwas falsch?
    Danke
    Määx
     

Diese Seite empfehlen