WIFIActivity:

public class WIFIActivity extends Activity {    //定义WifiManager对象    private WifiManager mainWifi;    //扫描出的网络连接列表    private List<ScanResult> wifiList;    //扫描完毕接收器    private WifiReceiver receiverWifi;    private Button btn_scan;    private ProgressDialog dialog;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //设定实例,供其他类调用        ((MyApp) getApplication()).setWifiActivity(this);        mainWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);        receiverWifi = new WifiReceiver();        btn_scan = (Button) findViewById(R.id.btn_scan);        btn_scan.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                scanWifi();            }        });    }    /**     * 扫描wifi,加载进度条     */    private void scanWifi() {        openWifi();        mainWifi.startScan();        dialog = ProgressDialog.show(this, "", "正在扫描wifi热点,请稍候");    }    /**     * 打开wifi     */    private void openWifi() {        if (!mainWifi.isWifiEnabled()) {            mainWifi.setWifiEnabled(true);        }    }    /**     * 关闭wifi     */    private void closeWifi() {        if (mainWifi.isWifiEnabled()) {            mainWifi.setWifiEnabled(false);        }    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        menu.add(0, 0, 0, "重新扫描");        return super.onCreateOptionsMenu(menu);    }    @Override    public boolean onMenuItemSelected(int featureId, MenuItem item) {        scanWifi();        return super.onMenuItemSelected(featureId, item);    }    @Override    protected void onPause() {        super.onPause();        //注销广播        unregisterReceiver(receiverWifi);    }    @Override    protected void onDestroy() {        super.onDestroy();        //关闭wifi        closeWifi();    }    @Override    protected void onResume() {        super.onResume();        registerReceiver(receiverWifi, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));    }    /**     * wifi广播接收器     */    class WifiReceiver extends BroadcastReceiver {        @Override        public void onReceive(Context context, Intent intent) {            if (intent.getAction().equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {                wifiList = mainWifi.getScanResults();                dialog.dismiss();                Toast.makeText(context, "扫描完毕", Toast.LENGTH_SHORT).show();                Intent in = new Intent(WIFIActivity.this, WifiListActivity.class);                startActivity(in);            }        }    }    public List<ScanResult> getWifiList() {        return wifiList;    }    public void setWifiList(List<ScanResult> wifiList) {        this.wifiList = wifiList;    }    public WifiManager getMainWifi() {        return mainWifi;    }    public void setMainWifi(WifiManager mainWifi) {        this.mainWifi = mainWifi;    }}

WifiListActivity :

/** * 列出扫描到的wifi热点 */public class WifiListActivity extends ListActivity implements AdapterView.OnItemClickListener {    private WIFIActivity wifiActivity;    private WifiConfiguration wc;    private ListView listView;    private ScanResult scanResult;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        MyApp app = (MyApp) getApplication();        wifiActivity = app.getWifiActivity();        wc = new WifiConfiguration();        ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, getString(wifiActivity.getWifiList()));        setListAdapter(adapter);        listView = getListView();        listView.setAdapter(adapter);        listView.setOnItemClickListener(this);    }    /**     * 将集合转成数组     *     * @param wifiList     * @return     */    public String[] getString(List<ScanResult> wifiList) {        ArrayList<String> listStr = new ArrayList<>();        for (int i = 0; i < wifiList.size(); i++) {            ScanResult scanResult = wifiList.get(i);            listStr.add(scanResult.SSID);        }        return listStr.toArray(new String[0]);    }    @Override    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {        scanResult = wifiActivity.getWifiList().get(position);        wc.SSID = "\"" + scanResult.SSID + "\""; // 配置wifi的SSID,即该热点的名称,如:TP-link_xxx        wc.preSharedKey = "\"7675781777\""; // 该热点的密码        wc.hiddenSSID = true;        wc.status = WifiConfiguration.Status.ENABLED;        wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);        wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);        wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);        wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);        wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);        wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN);        int res = wifiActivity.getMainWifi().addNetwork(wc);        //Log.d("Wif iPreference", "1111111add Network returned " + res);        boolean b = wifiActivity.getMainWifi().enableNetwork(res, true);        //Log.d("WifiPreference", "2222222222enableNetwork returned " + b);        Toast.makeText(WifiListActivity.this, res + "" + b, Toast.LENGTH_SHORT).show();    }}

MyApp :

public class MyApp extends Application {    private WIFIActivity wifiActivity = null;    public WIFIActivity getWifiActivity() {        return wifiActivity;    }    public void setWifiActivity(WIFIActivity wifiActivity) {        this.wifiActivity = wifiActivity;    }}

运行示例图:

【Android】获取WIFI列表简单小例子_第1张图片【Android】获取WIFI列表简单小例子_第2张图片

需要的权限:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

项目开发工具:Android Stuido,Gradle版本:2.8

源码下载地址:http://download.csdn.net/detail/lingwu7/9348727


更多相关文章

  1. Android:解决列表滚动时背景色变黑的方法
  2. 关于文字颜色/图片背景---selector状态列表
  3. Android Bluetooth蓝牙开发\蓝牙协议\蓝牙通信例子_Android支
  4. android仿京东商城例子
  5. Android UI开发第二篇——多级列表(ExpandableListView)
  6. android 获取应用列表 点击打开应用
  7. Android IDL 小例子
  8. android ExpandableListView简单例子

随机推荐

  1. Android中Paint字体属性的设置
  2. Android(安卓)NDK MediaCodec在ijkplayer
  3. springmvc mybatis shiro ios android 构
  4. Android开发工具类之DownloadManagerPro
  5. android使用mat分析内存泄漏
  6. Android(安卓)Log 配置解决方案
  7. Android(安卓)Path 使用 解析
  8. Android(安卓)studio出现Connection refu
  9. Android(安卓)Studio Gradle使用笔记
  10. android paint api drawText 绘制字体字