Подтвердить что ты не робот

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

friends.I хочу найти все доступные WiFi-сети и отобразить их в списке, который я пробовал, как показано ниже.. Но его не работает. Я отредактировал мой код, и теперь я получил результат, но со всем результатом, который я не сделал Мне нужно только имя 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); 
            }

        }
    }
4b9b3361

Ответ 1

Вам нужно создать BroadcastReceiver, чтобы прослушать результаты сканирования 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
        }
    }
}

В 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+ разрешения должны запрашиваться во время выполнения. (Для лабораторной среды вы также можете предоставить разрешения вручную в настройках вместо менее требуемого кодирования, но не рекомендуется для приложения конечного пользователя.)

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

Ответ 2

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