Как получить доступ к Wi-Fi-сетям и отобразить их в списке в Android

Friends.I хочу найти все доступные сети Wi-Fi и отобразить их в списке, который я пробовал, как показано ниже. Но его не работает. Я отредактировал мой код, и теперь я получил результат, но со всем результатом, который мне не нужен. I Мне нужно только имя сети Wi-Fi в моем списке.

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); } } } 

Вам необходимо создать BroadcastReceiver для прослушивания результатов проверки Wi-Fi:

 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 } } } 

В onCreate() вы назначили mWifiManager и инициируете сканирование:

 mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); registerReceiver(mWifiScanReceiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); mWifiManager.startScan(); 

getScanResults() вернет данные только в том случае, если у вас есть соответствующие разрешения. Для этого добавьте одну из двух следующих строк в ваш AndroidManifest.xml :

 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 

Также обратите внимание, что в API 23+ разрешения должны запрашиваться во время выполнения. (Для лабораторной среды вы также можете предоставить разрешения вручную в настройках вместо требуемого кода, но не рекомендуется для приложения конечного пользователя).

Обратите внимание, что код, который обрабатывает ваши результаты сканирования, будет запускаться каждый раз, когда будет доступен новый результат сканирования, обновляя результат.

  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); 
Intereting Posts