Cómo obtener redes wifi disponibles y mostrarlas en una lista en android
Amigos.Quiero encontrar todas las redes WiFi disponibles y mostrarlos en una lista que he intentado como a continuación .. Pero su no working.i han editado mi código y ahora tengo el resultado, pero con todo el resultado que no needed.I Sólo necesito el nombre de la red wifi en mi lista.
package com.example.wifilistdemo; import java.util.List; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.net.wifi.ScanResult; import android.net.wifi.WifiManager; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { TextView mainText; WifiManager mainWifi; WifiReceiver receiverWifi; List<ScanResult> wifiList; StringBuilder sb = new StringBuilder(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mainText = (TextView) findViewById(R.id.tv1); mainWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); if (mainWifi.isWifiEnabled() == false) { // If wifi disabled then enable it Toast.makeText(getApplicationContext(), "wifi is disabled..making it enabled", Toast.LENGTH_LONG).show(); mainWifi.setWifiEnabled(true); } receiverWifi = new WifiReceiver(); registerReceiver(receiverWifi, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); mainWifi.startScan(); mainText.setText("Starting Scan..."); } public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, 0, 0, "Refresh"); return super.onCreateOptionsMenu(menu); } public boolean onMenuItemSelected(int featureId, MenuItem item) { mainWifi.startScan(); mainText.setText("Starting Scan"); return super.onMenuItemSelected(featureId, item); } protected void onPause() { unregisterReceiver(receiverWifi); super.onPause(); } protected void onResume() { registerReceiver(receiverWifi, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); super.onResume(); } // Broadcast receiver class called its receive method // when number of wifi connections changed class WifiReceiver extends BroadcastReceiver { // This method call when number of wifi connections changed public void onReceive(Context c, Intent intent) { sb = new StringBuilder(); wifiList = mainWifi.getScanResults(); sb.append("\n Number Of Wifi connections :"+wifiList.size()+"\n\n"); for(int i = 0; i < wifiList.size(); i++){ sb.append(new Integer(i+1).toString() + ". "); sb.append((wifiList.get(i)).toString()); sb.append("\n\n"); } mainText.setText(sb); } } }
- Conexión wifi cambio de acción en android
- Cómo falsificar un evento conectado Wi-Fi o 3G en Android
- Enlace de Android a la configuración inalámbrica y de red
- ¿Cómo probar la conexión wifi vía adb?
- Cómo especificar la red wifi con NetworkRequest.Builder (). SetNetworkSpecifier (string)
- ¿Hay alguna forma de depurar aplicaciones a través de Wi-Fi o bluetooth?
- Wifi Connect-Desconectar de escucha
- El estado WiFi no está habilitado
- ¿Por qué tiene Wifi activado, pero no conectado Ayuda ubicación de red, cuando se utiliza LocationManager?
- Problemas de demostración directa de Android WiFi
- ¿No puede escuchar el estado del administrador de wi-fi de android?
- ¿Cómo puedo obtener los resultados de análisis de Android Wifi en una lista?
- Conéctese a wifi sin Internet mediante programación
Necesita crear un BroadcastReceiver
para escuchar los resultados del análisis Wifi:
private final BroadcastReceiver mWifiScanReceiver = new BroadcastReceiver() { @Override public void onReceive(Context c, Intent intent) { if (intent.getAction().equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) { List<ScanResult> mScanResults = mWifiManager.getScanResults(); // add your logic here } } }
En onCreate()
asignarás mWifiManager
e iniciarás una exploración:
mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); registerReceiver(mWifiScanReceiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); mWifiManager.startScan();
getScanResults()
devolverá datos sólo si tiene los permisos adecuados. Para ello, añade una de las dos líneas siguientes a tu AndroidManifest.xml
:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
También tenga en cuenta que en API 23+, los permisos deben ser solicitados en tiempo de ejecución. (Para un entorno de laboratorio, también puede conceder permisos manualmente en Configuración, pero no se recomienda la codificación para una aplicación de usuario final.)
Tenga en cuenta que el código que maneja los resultados del análisis se ejecutaría cada vez que un nuevo resultado de análisis estuviera disponible, actualizando el resultado.
class WifiReceiver extends BroadcastReceiver { public void onReceive(Context c, Intent intent) { sb = new StringBuilder(); wifiList = mainWifi.getScanResults(); for (int i = 0; i < wifiList.size(); i++){ sb.append(new Integer(i+1).toString() + "."); sb.append((wifiList.get(i)).SSID); sb.append("\n"); } mainText.setText(sb);
- Ionic construir android falla – La ejecución falló para tarea processDebugResources
- ¿Cómo puedo cambiar la altura de un EditText y un Button?