2017-11-24 6 views
1

Der Versuch, eine NFC-Tag-App zu erstellen, die Wifi-Anmeldeinformationen auf einem NFC-Tag speichert, dann lesen Sie sie aus. Von dort nehme ich die Zeichenkette und verwende das, um die Zugangsdaten über wifimanager mit dem drahtlosen Netzwerk zu verbinden. Ich bin mir ziemlich sicher, dass der Code korrekt ist, aber er verbindet sich immer noch nicht. Fehle ich etwas? Der Kanal, mit dem ich mich verbinden möchte, ist WPA2.Verwenden von WifiManager zum Herstellen einer Verbindung mit einem drahtlosen Netzwerk (wpa2)

Wie kann ich die Daten für die Funktion bin ziehen:

@Override 
     public void onClick(View v) 
     { 
      String payload = _textViewData.getText().toString(); 
      String[] parts = payload.split("-"); 
      String SSID = parts[0]; 
      String Password = parts[1]; 

      part1.setText(SSID); 
      part2.setText(Password); 
      connectToWifi(SSID, Password); 

     } 
    }); 

AKTUALISIERT: connect Funktion

private void connectToWifi(final String networkSSID, final String networkPassword){ 
    if (!wifiManager.isWifiEnabled()){ 
     wifiManager.setWifiEnabled(true); 
    } 
    WifiConfiguration conf = new WifiConfiguration(); 
    conf.SSID = String.format("\"%s\"", networkSSID); 
    conf.preSharedKey = "\""+ networkPassword +"\""; 

    WifiManager wifiManager = (WifiManager)this.getSystemService(Context.WIFI_SERVICE); 
    wifiManager.addNetwork(conf); 

    List<WifiConfiguration> wifiList = wifiManager.getConfiguredNetworks(); 
    for(WifiConfiguration i : wifiList) { 
     if(i.SSID != null && i.SSID.equals("\"" + networkSSID + "\"")) { 
      wifiManager.disconnect(); 
      wifiManager.enableNetwork(i.networkId, true); 
      wifiManager.reconnect(); 

      break; 
     } 
    } 
} 

UPDATE 2:

ich mein Netzwerk WPA geschaltet und es funktionierte, scheint nicht für WPA2 zu funktionieren, ist das überhaupt möglich?

Antwort

1

Für WPA-Netzwerk verbinden Sie benötigen Passwort wie folgt hinzuzufügen:

conf.preSharedKey = "\""+ networkPass +"\""; 

Für Offenes Netzwerk Sie dies tun müssen:

conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); 

Dann müssen Sie es Android WiFi-Manager hinzufügen Einstellungen:

WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE); 
wifiManager.addNetwork(conf); 

Danach müssen Sie es aktivieren.

List<WifiConfiguration> wifiList = wifiManager.getConfiguredNetworks(); 
     for(WifiConfiguration i : wifiList) { 
      if(i.SSID != null && i.SSID.equals("\"" + networkSSID + "\"")) { 
       wifiManager.disconnect(); 
       wifiManager.enableNetwork(i.networkId, true); 
       wifiManager.status = WifiConfiguration.Status.ENABLED;           
wifiManager.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);           
wifiManager.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);           
wifiManager.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);            
wifiManager.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);           wifiManager.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);          wifiManager.allowedProtocols.set(WifiConfiguration.Protocol.RSN);           wifiManager.allowedProtocols.set(WifiConfiguration.Protocol.WPA); 
       wifiManager.reconnect();    

       break; 
      }   
     } 

Glückliche Kodierung !!

+0

hmmm noch nicht funktioniert, wenden Sie sich bitte meine aktualisiert verbunden Funktion überprüfen, ob ich implementiert, was Sie richtig sagten. Außerdem hatte ich diesen 'wifiManager = (WifiManager) getSystemService (Context.WIFI_SERVICE);' am Anfang meiner OnCreate Funktion, also war ich nicht sicher, ob ich Ihren 'WifiManager wifiManager = (WifiManager) context.getSystemService (Kontext. WIFI_SERVICE); 'oder nicht, aber ich tat es. –

+0

So sieht es aus wie es funktioniert für WPA aber nicht WPA2 –

+0

@PaulCabz ich aktualisiere den Code bitte überprüfen. Ich war derselbe Code, der gut funktionierte, für WPA2 muss man offizielle Ausgaben lesen. hoffe, es funktioniert. Danke. –

0

Dank @HemantParmar

Mit seiner Hilfe und ein bisschen googeln habe ich es mit WPA2 zu arbeiten:

private void connectToWifiWPA2(final String networkSSID, final String networkPassword){ 
    WifiConfiguration conf = new WifiConfiguration(); 
    conf.SSID = "\"" + networkSSID + "\""; 
    conf.preSharedKey = "\""+ networkPassword +"\""; 

    WifiManager wifiManager = (WifiManager)getSystemService(WIFI_SERVICE); 
    //if (!wifiManager.isWifiEnabled()){ 
    // wifiManager.setWifiEnabled(true); 
    //} 
    conf.status = WifiConfiguration.Status.ENABLED; 
    conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); 
    conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); 
    conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); 
    conf.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); 
    conf.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); 
    conf.allowedProtocols.set(WifiConfiguration.Protocol.RSN); 

    int netId = wifiManager.addNetwork(conf); 
    wifiManager.disconnect(); 
    wifiManager.enableNetwork(netId, true); 
    wifiManager.reconnect(); 
} 
Verwandte Themen