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

运行示例图:

需要的权限:

<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(安卓)Notification下载实例
  2. android捕获开机启动(原)
  3. Android学习第八天—全局大喇叭(详解广播机制)
  4. zxing项目源码解读(2.3.0版本,Android部分)
  5. 系出名门Android(4) - 活动(Activity), 服务(Service), 广播(Bro
  6. Android扫描条形码实现
  7. android的wifi扫描流程及管理(framework层的wifi扫描分析)
  8. 条码扫描二维码扫描——ZXing android 源码简化
  9. android扫描二维码(zxing)附带小例子

随机推荐

  1. 实用攻略:云服务器如何选购?要考虑哪些因素
  2. Python MNIST手写体识别详解与试练
  3. 0701作业
  4. 固定导航栏
  5. 【阿里云镜像】使用阿里巴巴开源镜像站镜
  6. 聊一聊如何把SSL证书安装到小鸟云服务器
  7. 服务器登录密码忘记了怎么办?总结办法如下
  8. 阿萨德请问日期为人
  9. 飞舞的气泡
  10. 对容器镜像的思考和讨论