2017-09-28 1 views
0

Während dies unter Verwendung ein offenes WiFi-Netzwerk verbinden (das noch nicht auf der Vorrichtung konfiguriert ist):Android Connect WiFi zu öffnen - Fragmentierte zwischen Nexus 5 und Nexus 5X

public static void connectToWifiNetwork(Context context, final String ssid, String password) { 
    final WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE); 
    wifiManager.disconnect(); 

    // Delete already available network 
    List<WifiConfiguration> list = wifiManager.getConfiguredNetworks(); 
    for (WifiConfiguration i : list) { 
     if(i.SSID != null && i.SSID.equals("\"" + ssid + "\"")) { 
      Log.i(TAG, "Deleting configuration for " + ssid); 
      wifiManager.removeNetwork(i.networkId); 

      break; 
     } 
    } 

    WifiConfiguration conf = new WifiConfiguration(); 
    conf.SSID = "\"" + ssid + "\""; 
    conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); 

    Log.d(TAG, "Added network " + ssid + " " + password); 
    final int addNetworkResult = wifiManager.addNetwork(conf); 

    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      Log.d(TAG, "Attempting to connect to " + ssid + " with id " + addNetworkResult); 
      wifiManager.enableNetwork(addNetworkResult, true); 
     } 
    }).start(); 
} 

On Nexus 5 mit API 23 (6.0.1), das hinzugefügte Netzwerk hat das Ergebnis -1, verbindet sich nicht. Auf Nexus 5X mit API 26 (8.0.0) hat das hinzugefügte Netzwerk das Ergebnis 2, die Verbindung ist in Ordnung.

Ich baue für Ziel API 25.

Ich bin nicht sicher, ob es über die API-Ebene ist oder das Gerät, aber ich möchte eine Lösung haben, um sie alle zu regieren.

Irgendwelche Ideen?

Edit: Auch versucht mit allen Konfigurationen wie in diesem SO question:

conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); 
conf.allowedProtocols.set(WifiConfiguration.Protocol.RSN); 
conf.allowedProtocols.set(WifiConfiguration.Protocol.WPA); 
conf.allowedAuthAlgorithms.clear(); 
conf.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); 
conf.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); 
conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); 
conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104); 
conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); 
conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); 

Hat nicht funktioniert auf Nexus 5 als auch. Hinweis: ich WEP verbinden kann/WPA/WPA2 programmatisch beiden Geräte unter Verwendung von this implementation.

Antwort

0

Aus irgendeinem Grunde verwenden, hatte ich das offene Netzwerk von Android WiFi-Einstellungen manuell löschen (auch wenn die Verbindung über es funktioniert gut). Es verbindet jetzt, aber nicht jedes Mal.

Es trennt die Verbindung zum aktuellen Netzwerk, versucht, eine Verbindung zum offenen Netzwerk herzustellen, und stellt dann eine Verbindung zum vorherigen Netzwerk her.

Verwandte Themen