通过WifiManager可以实现对wifi进行操作,实现wifi自动连接等一些功能
16lz
2021-01-26
摘要: 通过WifiManager可以实现对wifi进行操作,实现wifi自动连接等一些功能。
WifiManager工具类:
android包中自带有WifiManager工具类,专门用于wifi管理:
import android.net.wifi.WifiManager;
取得WifiManager对象:
WifiManager mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
打开WIFI:
if (!mWifiManager.isWifiEnabled()) {mWifiManager.setWifiEnabled(true);}
创建一个WIFI信息:
public WifiConfiguration CreateWifiInfo(String SSID, String Password, int Type) {WifiConfiguration config = new WifiConfiguration();config.allowedAuthAlgorithms.clear();config.allowedGroupCiphers.clear();config.allowedKeyManagement.clear();config.allowedPairwiseCiphers.clear();config.allowedProtocols.clear();config.SSID = "\"" + SSID + "\"";WifiConfiguration tempConfig = this.IsExsits(SSID);if (tempConfig != null) {mWifiManager.removeNetwork(tempConfig.networkId);}if (Type == 1) // WIFICIPHER_NOPASS{config.wepKeys[0] = "";config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);config.wepTxKeyIndex = 0;}if (Type == 2) // WIFICIPHER_WEP{config.hiddenSSID = true;config.wepKeys[0] = "\"" + Password + "\"";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 == 3) // 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.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);config.status = WifiConfiguration.Status.ENABLED;}return config;}
这里只介绍第三个参数:Type。从代码中可以看出,Type有三个值,分别为1,2,3。WIFI热点是有加密的,加密方式包括:不加密,WEP,WPA三种,1、2、3就分别对应这三种加密方式,方法返回一个WIFI热点信息。
添加一个网络并连接:
public void addNetwork(WifiConfiguration wcg) {int wcgID = mWifiManager.addNetwork(wcg);boolean b = mWifiManager.enableNetwork(wcgID, true);System.out.println("a--" + wcgID);System.out.println("b--" + b);}
具体的使用方式如下:
mWifiAdmin.addNetwork(mWifiAdmin.CreateWifiInfo(SSID, password, 3));
判断WIFI是否连接成功:
public int isWifiContected(Context context) {ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo wifiNetworkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);Log.v(TAG, "isConnectedOrConnecting = " + wifiNetworkInfo.isConnectedOrConnecting());Log.d(TAG, "wifiNetworkInfo.getDetailedState() = " + wifiNetworkInfo.getDetailedState());if (wifiNetworkInfo.getDetailedState() == DetailedState.OBTAINING_IPADDR|| wifiNetworkInfo.getDetailedState() == DetailedState.CONNECTING) {return WIFI_CONNECTING;} else if (wifiNetworkInfo.getDetailedState() == DetailedState.CONNECTED) {return WIFI_CONNECTED;} else {Log.d(TAG, "getDetailedState() == " + wifiNetworkInfo.getDetailedState());return WIFI_CONNECT_FAILED;}}
关闭WIFI连接:
if (mWifiManager.isWifiEnabled()) {mWifiManager.setWifiEnabled(false);}
更多相关文章
- Android实现文字垂直滚动、纵向走马灯效果的实现方式汇总
- android开发之 Wifi的四个类
- Android(安卓)adb常见问题整理
- onCharacteristicChanged 回调问题
- Android存储设备(U盘,SD卡)状态监测
- 第八次课——数据存储方式
- 安卓定时刷新界面
- Android联网使用HttpClient 和HttpResponse 小结
- android 使用Http的Get方式读取网络数据