Eine Verbindung zu Offenen WLAN
Ich folgenden code verwenden, um eine Verbindung zu verschlüsselten Netzwerken. Wenn jedoch ein Netzwerk ist ungesichert, und ich lassen Sie Schlüssel leer ( "" ), dann scheitert er. Hat jemand eine Idee wie man dieses Problem lösen? Außerdem ist es möglich, zu erkennen, wenn ein Netz offen ist mit der ssid /bssid ? Oder muss ich den scan mit einem filter?
public void connectToSSID(final String ssid, final String key) {
Log.i("wifimaster", "connection to "+ssid);
WifiConfiguration wc = new WifiConfiguration();
wc.SSID = "\""+ssid+"\""; //IMPORTANT! This should be in Quotes!!
wc.priority = 40;
wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
wc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
wc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
wc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_EAP);
wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
wc.preSharedKey = "\""+key+"\"";
wc.wepKeys[0] = "\""+key+"\""; //This is the WEP Password
wc.wepTxKeyIndex = 0;
wc.preSharedKey = "\""+key+"\"";
int res = wifiManager.addNetwork(wc);
Log.d("WifiPreference", "add Network returned " + res );
boolean es = wifiManager.saveConfiguration();
Log.d("WifiPreference", "saveConfiguration returned " + es );
boolean b = wifiManager.enableNetwork(res, true);
Log.d("WifiPreference", "enableNetwork returned " + b );
if(b)
Toast.makeText(c, c.getString(R.string.connected), Toast.LENGTH_SHORT).show();
else
Toast.makeText(c, c.getString(R.string.unconnected), Toast.LENGTH_SHORT).show();
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
nur und es wird funktionieren.
entfernen Sie alle anderen Zuordnungen zu
wc
ist es nicht notwendig, Sie zu nutzen für eine einfache Anbindung an ein Netzwerk. Sie sind nichtcreating
einem Netzwerk, stellen Sie eine Verbindung zu einemexisting
ein.Für die vollständige Lösung überprüfen Sie diesen link: Wie kann ich eine Verbindung zu einem bestimmten Wi-Fi-Netzwerk in Android programmgesteuert?
Es hat alles, was Sie brauchen, um wissen.