如何获得可用的WiFi网络,并在Android的一个列表中显示出来 [英] how to get available wifi networks and display them in a list in android

查看:155
本文介绍了如何获得可用的WiFi网络,并在Android的一个列表中显示出来的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

friends.I要找到所有可用的WiFi网络,并在我试图为below..But它不是working.i已经编辑我的code一个列表中显示出来,现在我得到的结果,但所有的结果我不needed.I只需要在我的名单上wifi网络的名称。

 包com.example.wifilistdemo;

进口的java.util.List;

进口android.app.Activity;
进口android.content.BroadcastReceiver;
进口android.content.Context;
进口android.content.Intent;
进口android.content.IntentFilter;
进口android.net.wifi.ScanResult;
进口android.net.wifi.WifiManager;
进口android.os.Bundle;
进口android.view.Menu;
进口android.view.MenuItem;
进口android.widget.TextView;
进口android.widget.Toast;

公共类MainActivity延伸活动{
    TextView中的mainText;
    WifiManager mainWifi;
    WifiReceiver receiverWifi;
    名单< ScanResult> wifiList;
    StringBuilder的SB =新的StringBuilder();

    @覆盖
    保护无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.activity_main);
        的mainText =(TextView中)findViewById(R.id.tv1);
         mainWifi =(WifiManager)getSystemService(Context.WIFI_SERVICE);
         如果(mainWifi.isWifiEnabled()==假)
         {
             //如果禁用无线网络,然后启用它
             Toast.makeText(getApplicationContext(),WiFi是disabled..making它启用,
             Toast.LENGTH_LONG).show();

             mainWifi.setWifiEnabled(真正的);
         }
         receiverWifi =新WifiReceiver();
         registerReceiver(receiverWifi,新的IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
           mainWifi.startScan();
           mainText.setText(开始扫描...);
        }

        公共布尔onCreateOptionsMenu(功能菜单){
            menu.add(0,0,0,刷新);
            返回super.onCreateOptionsMenu(菜单);
        }

        公共布尔onMenuItemSelected(INT FEATUREID,菜单项项){
            mainWifi.startScan();
            mainText.setText(开始扫描);
            返回super.onMenuItemSelected(FEATUREID,项目);
        }

        保护无效的onPause(){
            unregisterReceiver(receiverWifi);
            super.onPause();
        }

        保护无效onResume(){
            registerReceiver(receiverWifi,新的IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
            super.onResume();
        }

        //广播接收器类叫做它的接收方法
        //当改变无线连接数

        类WifiReceiver扩展的BroadcastReceiver {

            //改变时,这种方法调用的wifi连接数
            公共无效的onReceive(上下文C,意图意图){

                SB =新的StringBuilder();
                wifiList = mainWifi.getScanResults();
                sb.append(\ n个无线连接:+ wifiList.size()+\ñ\ N);

                的for(int i = 0; I< wifiList.size();我++){

                    sb.append(新整数第(i + 1)的ToString()+。);
                    sb.append((wifiList.get(I))的toString());
                    sb.append(\ñ\ N);
                }

                mainText.setText(某人);
            }

        }
    }
 

解决方案

您需要创建一个的BroadcastReceiver 来监听无线扫描结果:

 私人最终的BroadcastReceiver mWifiScanReceiver =新的BroadcastReceiver(){
    @覆盖
    公共无效的onReceive(上下文C,意图意图){
        如果(intent.getAction()。等于(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)){
            名单< ScanResult> mScanResults = mWifiManager.getScanResults();
            //在此处添加你的逻辑
        }
    }
}
 

的onCreate()那么您可以指定 mWifiManager 键,启动扫描:

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

请注意,code的处理您的扫描结果将每次运行一个新的扫描结果可用,更新的结果。

friends.I want to find all available WiFi networks and display them in a list i have tried as below..But its not working.i have edited my code and now i got the result but with all the result that i dont needed.I only need name of wifi network in my list.

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

        }
    }

解决方案

You need to create a BroadcastReceiver to listen for Wifi scan results:

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

In onCreate() you would assign mWifiManager and initiate a scan:

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

Note that the code which handles your scan results would run every time a new scan result is available, updating the result.

这篇关于如何获得可用的WiFi网络,并在Android的一个列表中显示出来的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆