更新可用网络列表 - BroadcastReceiver

时间:2016-09-01 09:29:34

标签: android networking broadcastreceiver wifi wifimanager

我有一个广播接收器来扫描可用的网络,使用您可以在StackOverflow上轻松找到的普通代码。

我在布局上为每个可用网络添加一个图标,问题是当网络被删除时,它仍会显示它。

问题是对于这个广播接收器,它正在侦听的动作/意图是SCAN_RESULTS_AVAILABLE_ACTION。在开始我可以调用startScan(),但之后将不再有扫描。它只扫描我是否手动转到手机上的wifi设置。

这可能是什么解决方案?它应该自动删除不再可用的网络,但为了做到这一点,它必须再次扫描,但我不知道我应该如何“触发”再次扫描。

我的代码是:

  public class WifiReceiver extends BroadcastReceiver {

    private Vector<String> keywords;

    public void onReceive(Context c, Intent intent) {
        System.out.println("TOU AQUI NO WIFI RECEIVER !! ");
        List<ScanResult> connResults=wifimanager.getScanResults();
        List<String> scanResultsSSID = new ArrayList<>() ;

        for(int i=0;i<connResults.size();i++){
            String ssid=connResults.get(i).SSID;

            scanResultsSSID.add(ssid);

            if(ssid.contains("teste")){
                System.out.println("Estou no : " + connResults.get(i).toString());
                radarTextView.addKeyWord(ssid);
            }

        }

        keywords=radarTextView.getKeyWords();

        for(int j=0;j<keywords.size();j++){
            String tmp=keywords.get(j);
            System.out.println("this is one of the keyword : "+ tmp);
            if(!scanResultsSSID.contains(tmp)){
                radarTextView.removeKeyWord(tmp);
                System.out.println("removed this : "+tmp);
            }
        }

        radarTextView.show();


    }



}

我知道我只是添加一个名为“teste”的网络,但这是我测试的一部手机上的wifi名称。如果我将其关闭,则不会从另一部手机中删除。

1 个答案:

答案 0 :(得分:1)

使用TimerTask

像这样

Timer timer = new Timer();
int DELAY=0;
int INTERVAL=10000;                           

timer.scheduleAtFixedRate(new TimerTask() {
        @Override
        public void run() {
            connResults = wifimanager.getScanResults();
        }
    },DELAY,INTERVAL);