Wenn dies das Layout der App ist, und wenn das Wifi eingeschaltet ist, möchte ich die Liste der verfügbaren Netzwerke und dann eine Verbindung herstellen, indem Sie eines auswählen sieSo suchen und verbinden Sie sich mit einem bestimmten WLAN-Netzwerk in Android programmgesteuert
3
A
Antwort
8
Suche nach verfügbaren WLAN-Netzwerken
public class MainActivity extends Activity {
WifiManager mainWifi;
WifiReceiver receiverWifi;
StringBuilder sb = new StringBuilder();
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mainWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
receiverWifi = new WifiReceiver();
registerReceiver(receiverWifi, new IntentFilter(
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
if(mainWifi.isWifiEnabled()==false)
{
mainWifi.setWifiEnabled(true);
}
doInback();
}
public void doInback()
{
new Handler().postDelayed(new Runnable() {
@Override
public void run()
{
// TODO Auto-generated method stub
mainWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
receiverWifi = new WifiReceiver();
registerReceiver(receiverWifi, new IntentFilter(
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
mainWifi.startScan();
doInback();
}
}, 1000);
}
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, 0, 0, "Refresh");
return super.onCreateOptionsMenu(menu);}
public boolean onMenuItemSelected(int featureId, MenuItem item) {
mainWifi.startScan();
return super.onMenuItemSelected(featureId, item);}
@Override
protected void onPause()
{
unregisterReceiver(receiverWifi);
super.onPause();
}
@Override
protected void onResume()
{
registerReceiver(receiverWifi, new IntentFilter(
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
super.onResume();
}
class WifiReceiver extends BroadcastReceiver
{
public void onReceive(Context c, Intent intent)
{
ArrayList<String> connections=new ArrayList<String>();
ArrayList<Float> Signal_Strenth= new ArrayList<Float>();
sb = new StringBuilder();
List<ScanResult> wifiList;
wifiList = mainWifi.getScanResults();
for(int i = 0; i < wifiList.size(); i++)
{
connections.add(wifiList.get(i).SSID);
}
}
}
}
erstellen WifiConfiguration Instanz
WifiConfiguration conf = new WifiConfiguration();
conf.SSID = "\"" + networkSSID + "\"";
für WEP-Netzwerk
conf.wepKeys[0] = "\"" + networkPass + "\"";
conf.wepTxKeyIndex = 0;
conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
Für WPA Netzwerk
conf.preSharedKey = "\""+ networkPass +"\"";
Für Offenes Netzwerk
conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
fügen Sie es zu Android wifi Manager
WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
wifiManager.addNetwork(conf);
es ermöglichen
List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
for(WifiConfiguration i : list) {
if(i.SSID != null && i.SSID.equals("\"" + networkSSID + "\"")) {
wifiManager.disconnect();
wifiManager.enableNetwork(i.networkId, true);
wifiManager.reconnect();
break;
}
}
0
Von der ersten Seite nur drittes Beispiel für verfügbare Scan bekommen wifi für mich gearbeitet, und ich ändern sie Wählen Sie BSSID
mit:
[bssid = wifiScanList.get(i).BSSID;
if (desiredMacAddress.equals(bssid)){ APPEND TO SHOWING LIST...}
]
es testet es und es hat ohne Probleme funktioniert + gab, was ich wollte. von der zweiten Seite bekommen, wie es gewünscht Zugangspunkt zu verbinden versuchen, sie es ohne jede Probleme dann arbeiten, aber ich bin nicht sicher kann es gibt mir diese Funktionalität
Get WiFi's SSID without connecting to it?
eine letzte Sache, wenn Sie Sekunde getestet ein echtes Gerät wird seine Einstellung ändern, was zu Problemen führen wird
Verwandte Themen
- 1. android - Verbinden Sie sich mit Web-Service
- 2. So suchen Sie nach einem bestimmten Element in Liste Iterator
- 3. Programmgesteuert verbinden mit einem Bluetooth-Headset von einer Android-Anwendung
- 4. So verbinden Sie HTTPS-Socket in Android
- 5. Verbinden Sie zwei Android-Geräte mit Bluetooth programmgesteuert
- 6. So suchen Sie nach einem bestimmten Teil in einer Zeichenkette und behalten nur diesen Teil
- 7. So verbinden und überprüfen Sie alle Dateien in einem Ordner innerhalb mehrerer Server mit Java
- 8. So verbinden Sie einen Benutzer von Google Signin mit einem anderen Benutzer, der sich angemeldet hat
- 9. Verbinden mit bestimmten IP und Port
- 10. Suchen Sie Dateien, deren Pfad mit einem bestimmten Muster endet
- 11. MySQL verbinden mit zwei Spalten auf einem Tisch suchen
- 12. So suchen Sie Videos mit youtube Daten API in Android
- 13. Wie erkennen und verbinden Sie mit einem Wifi-Netzwerk programmgesteuert mit Apple SDK
- 14. So starten Sie eine Android-Anwendung programmgesteuert
- 15. So suchen Sie nach bestimmten Wert in Registrierungsschlüssel
- 16. So starten Sie die ec2-Instanz mit AWS SDK und verbinden sich über AWS CLI
- 17. Suchen und Ersetzen-Versionen in einem bestimmten Block
- 18. Möchten Sie nach einem bestimmten Benutzer in verschiedenen Datenbanken suchen
- 19. Verbinden mit einem Webserver mit Android
- 20. So verbinden Sie Azure VM mit Android App
- 21. So suchen Sie nach einer bestimmten Zeichenfolge im Zellenfeld
- 22. So verstecken Sie einen Ordner mit programmgesteuert in Android, und greifen Sie auf die Datei.
- 23. Code in einem bestimmten GitHub suchen Zweig
- 24. Verbinden Sie das Element von einem Spinner mit einem anderen Spinner Liste in android Studio
- 25. Verbinden mit einem Android-Server mit Websocket
- 26. So erhalten Sie externe Bildschirmliste und verbinden Sie mit iOS
- 27. So verbinden Sie zwei Dateien in einem Versionskontrollsystem
- 28. So entfernen Sie Ordner mit einem bestimmten Namen
- 29. So verbinden Sie Android App mit einem lokalen Web-Server mit WLAN
private final Handler Handler = neu Handler() - Fehler in dieser Zeile erhalten dh Handler ist abstrakt kann nicht instanziiert werden –
Fehler bei handler.postDelayed (neue Runnable() , kann Methode nicht beheben postDelayed –
Ich habe den Code Teil über Handler bearbeitet, und warten Sie nicht auf jemanden, der das tun genauer Code für dich. Betrachten Sie dies als nur einen Thread, der Ihnen hilft, Ihre Bedürfnisse zu erfüllen. –