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 studio详细的编译错误提示
  2. Android检测版本更新(读取apk配置文件中的
  3. Android软键盘调用及隐藏,以及获得点击软
  4. Android Intent多种传值方式
  5. android标题栏去除和全屏
  6. android实现ftp上传、下载,支持文件夹
  7. Android Q 使用通知栏消息
  8. viewPager的简单实现
  9. Android使用Retrofit上传单个文件以及多
  10. Android反射机制