break;
}
break;
default:
break;
}
}
}
相关API请参阅:官网WifiManagerAPI
六,权限
七,打开WIFI
/**
- 打开Wifi
*/
public void openWiFi() {
if (!isWifiEnabled() && null != mWifiManager) {
mWifiManager.setWifiEnabled(true);
}
}
八,关闭WIFI
/**
- 关闭Wifi
*/
public void closeWiFi() {
if (isWifiEnabled() && null != mWifiManager) {
mWifiManager.setWifiEnabled(false);
}
}
九,扫描附近的WIFI
/**
- 扫描附近的WIFI
*/
public void startScan() {
if (null != mWifiManager) {
mWifiManager.startScan();
}
}
十,获取WIFI列表
/**
-
获取最近扫描的WIFI热点
-
@return WIFI热点列表
*/
public List getScanResults() {
// 得到扫描结果
if (null != mWifiManager) {
return mWifiManager.getScanResults();
}
return null;
}
十一,通过密码连接到WIFI
/**
-
连接到开放网络
-
@param ssid 热点名
-
@return 配置是否成功
*/
public boolean connectOpenNetwork(@NonNull String ssid) {
// 获取networkId
int networkId = setOpenNetwork(ssid);
if (-1 != networkId) {
// 保存配置
boolean isSave = saveConfiguration();
// 连接网络
boolean isEnable = enableNetwork(networkId);
return isSave && isEnable;
}
return false;
}
/**
-
连接到WEP网络
-
@param ssid 热点名
-
@param password 密码
-
@return 配置是否成功
*/
public boolean connectWEPNetwork(@NonNull String ssid, @NonNull String password) {
// 获取networkId
int networkId = setWEPNetwork(ssid, password);
if (-1 != networkId) {
// 保存配置
boolean isSave = saveConfiguration();
// 连接网络
boolean isEnable = enableNetwork(networkId);
return isSave && isEnable;
}
return false;
}
/**
-
连接到WPA2网络
-
@param ssid 热点名
-
@param password 密码
-
@return 配置是否成功
*/
public boolean connectWPA2Network(@NonNull String ssid, @NonNull String password) {
// 获取networkId
int networkId = setWPA2Network(ssid, password);
if (-1 != networkId) {
// 保存配置
boolean isSave = saveConfiguration();
// 连接网络
boolean isEnable = enableNetwork(networkId);
return isSave && isEnable;
}
return false;
}
这里就写了三种加密方式的连接,其中ssid是扫描到的,password是单击ListView列表弹出EditText框输入的。
十二,直接连接配置过的WIFI
这里的思路是通过NetworkId连接到WIFI (配置过的网络可以直接获取到NetworkID,从而不用再输入密码)。代码中采用回调方式来实现,这个具体请看项目代码。
十三,断开指定WIFI
/**
-
断开指定 WIFI
-
@param netId netId
-
@return 是否断开
*/
public boolean disconnectWifi(int netId) {
if (null != mWifiManager) {
boolean isDisable = mWifiManager.disableNetwork(netId);
boolean isDisconnect = mWifiManager.disconnect();
return isDisable && isDisconnect;
}
return false;
}
十四,删除配置
/**
-
删除配置
-
@param netId netId
-
@return 是否删除成功
*/
public boolean deleteConfig(int netId) {
if (null != mWifiManager) {
boolean isDisable = mWifiManager.disableNetwork(netId);
boolean isRemove = mWifiManager.removeNetwork(netId);
boolean isSave = mWifiManager.saveConfiguration();
return (isDisable && isRemove && isSave);
}
return false;
}
这个功能是在ListView长按监听那里的
十五,开启热点
Android7.0及7.0之前的方法:
/**
-
创建热点,这里只能是7.0或7.0之前的版本
-
手动设置热点名和密码
*/
public void createWifiHotspot7() {
WifiConfiguration config = new WifiConfiguration();
config.SSID = “性感荷官在线发脾气”;
config.preSharedKey = “123456789”;
config.hiddenSSID = true;
config.allowedAuthAlgorithms
.set(WifiConfiguration.AuthAlgorithm.OPEN);//开放系统认证
config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
//设置加密的方式,这个对应小米手机MIUI
int indexOfWPA2_PSK = 4;
//从WifiConfiguration.KeyMgmt数组中查找WPA2_PSK的值
for (int i = 0; i < WifiConfiguration.KeyMgmt.strings.length; i++) {
if (WifiConfiguration.KeyMgmt.strings[i].equals(“WPA2_PSK”)) {
indexOfWPA2_PSK = i;
break;
}
}
config.allowedKeyManagement.set(indexOfWPA2_PSK);
config.allowedPairwiseCiphers
.set(WifiConfiguration.PairwiseCipher.TKIP);
写在最后
在技术领域内,没有任何一门课程可以让你学完后一劳永逸,再好的课程也只能是“师傅领进门,修行靠个人”。“学无止境”这句话,在任何技术领域,都不只是良好的习惯,更是程序员和工程师们不被时代淘汰、获得更好机会和发展的必要前提。
如果你觉得自己学习效率低,缺乏正确的指导,可以加入资源丰富,学习氛围浓厚的技术圈一起学习交流吧!
加入我们吧!群内有许多来自一线的技术大牛,也有在小厂或外包公司奋斗的码农,我们致力打造一个平等,高质量的Android交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。
35岁中年危机大多是因为被短期的利益牵着走,过早压榨掉了价值,如果能一开始就树立一个正确的长远的职业规划。35岁后的你只会比周围的人更值钱。