Android(安卓)Wifi自动打开并连接
16lz
2021-01-26
随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、博主微信(guyun297890152)、QQ技术交流群(183198395)。
转自:http://blog.csdn.net/yangwen123/article/details/9996359
版权声明:本文为博主原创文章,未经博主允许不得转载。
WIFI自动打开并连接到指定的热点:
[java] view plain copy
- do {
- try {
- //连接到指定的wifi热点
- mAdmin.connectWifi(SSID, PWD, WifiCipherType.WIFICIPHER_WPA);
- Thread.sleep(20 * 1000);
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- Log.i(TAG, "connect wifi failed. please open wifi !");
- break;
- }
- } while (!mAdmin.isWifiConnect()); //判断wifi是否连接成功
连接指定wifi热点
[java] view plain copy
- public void connectWifi(String SSID, String Password, WifiCipherType Type) {
- //打开wifi
- if (!this.openWifi()) {
- return;
- }
- //等到wifi状态变成WIFI_STATE_ENABLED的时候才能执行下面的语句
- while (mWifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLING) {
- try {
- // 为了避免程序一直while循环,让它睡个100毫秒在检测……
- Thread.currentThread();
- Thread.sleep(100);
- } catch (InterruptedException ie) {
- }
- }
- //判断是否已配置过当前热点
- WifiConfiguration config = IsConfig(SSID);
- if (config == null) {
- //创建一个当前连接的wifi热点
- config = CreateWifiInfo(SSID, Password, Type);
- }else {
- mWifiManager.removeNetwork(config.networkId);
- }
- WifiManager.Channel mChannel = mWifiManager.initialize(mContext, mContext.getMainLooper(), null);
- mWifiManager.connect(mChannel, config, null);
- }
判断是否已经配置过当前wifi热点
[java] view plain copy
- public WifiConfiguration IsConfig(String SSID) {
- List
existingConfigs = mWifiManager.getConfiguredNetworks(); - if (existingConfigs != null && existingConfigs.size() > 0) {
- for (WifiConfiguration existingConfig : existingConfigs) {
- if (existingConfig.SSID.equals("\"" + SSID + "\"")) {
- return existingConfig;
- }
- }
- }
- return null;
- }
添加一个wifi热点信息配置
[java] view plain copy
- public WifiConfiguration CreateWifiInfo(String SSID, String Password, WifiCipherType Type) {
- WifiConfiguration config = new WifiConfiguration();
- config.allowedAuthAlgorithms.clear();
- config.allowedGroupCiphers.clear();
- config.allowedKeyManagement.clear();
- config.allowedPairwiseCiphers.clear();
- config.allowedProtocols.clear();
- config.SSID = "\"" + SSID + "\"";
- if (Type == WifiCipherType.WIFICIPHER_NOPASS) {
- config.wepKeys[0] = "";
- config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
- config.wepTxKeyIndex = 0;
- }
- if (Type == WifiCipherType.WIFICIPHER_WEP) {
- config.preSharedKey = "\"" + Password + "\"";
- config.hiddenSSID = true;
- config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
- config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
- config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
- config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
- config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
- config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
- config.wepTxKeyIndex = 0;
- }
- if (Type == WifiCipherType.WIFICIPHER_WPA) {
- config.preSharedKey = "\"" + Password + "\"";
- config.hiddenSSID = true;
- config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
- config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
- config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
- config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
- config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
- config.status = WifiConfiguration.Status.ENABLED;
- } else {
- return null;
- }
- return config;
- }
打开或关闭wifi连接
[java] view plain copy
- // 打开WIFI
- public boolean openWifi() {
- boolean bRet = true;
- if (!mWifiManager.isWifiEnabled()) {
- bRet = mWifiManager.setWifiEnabled(true);
- }
- return bRet;
- }
- // 关闭WIFI
- public void closeWifi() {
- if (mWifiManager.isWifiEnabled()) {
- mWifiManager.setWifiEnabled(false);
- }
- }
判断wifi是否成功连接
[java] view plain copy
- public boolean isWifiConnect() {
- ConnectivityManager mConnectivityManager = (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
- NetworkInfo mWifi = mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
- return mWifi.isConnected();
- }
更多相关文章
- SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
- 简单介绍安卓的五大布局
- 在SOUI中使用网格布局
- SparseArray详解,我说SparseArray,你说要!
- 使用JTDS连接sqlserver数据库
- Android(安卓)studio 3.0.1 莫名其妙 R报错啦!(check logs for det
- Android用Intent启动Activity的方法
- ProGuard惯用法
- Android开发 Fiddler抓包工具简介