✍️作者简介:小北编程(专注于HarmonyOS、Android、Java、Web、TCP/IP等技术方向)
🐳博客主页:开源中国、稀土掘金、51cto博客、博客园、知乎、简书、慕课网、CSDN
🔔如果文章对您有一定的帮助请👉关注✨、点赞👍、收藏📂、评论💬。
🔥如需转载请参考【转载须知】
随着移动应用的普及,对于WiFi连接、管理和配置的需求日益增加。为了简化这些操作,我们可以利用一个名为WifiUtils的工具类。这个工具类提供了一系列方法,可以方便地执行WiFi状态检查、WiFi打开或关闭、扫描可用的WiFi网络、连接到指定的WiFi网络、断开当前连接的WiFi网络等操作。
WifiUtils工具类介绍
WifiUtils
工具类的核心功能包括:
- 检查WiFi状态
public boolean isWifiEnabled();
- 打开WiFi
public void openWifi();
- 关闭WiFi
public void closeWifi();
- 扫描WiFi网络
public void scanWifi();
- 获取扫描到的WiFi列表
public List<WifiConfiguration> getScanResults();
- 获取当前连接的WiFi信息
public WifiInfo getConnectedWifiInfo();
- 判断是否有当前可用的WiFi连接
public boolean isWifiConnected();
- 关闭所有连接
public void disconnectWifi();
- 连接到WiFi
public void connectToWifi(WifiConfiguration wifiConfig);
- 移除WiFi
public void removeWifi(int netId);
- 添加WiFi到系统
public int addNetwork(WifiConfiguration wifiConfig);
- 创建WiFi配置
public WifiConfiguration createWifiConfig(String ssid, String password, int type);
- 获取是否已经存在的配置
public WifiConfiguration isExist(String ssid);
- 去除同名WiFi
public void removeSameWifi(String ssid);
- 判断扫描结果中是否包含了特定名称的WiFi
public boolean isScanResultExist(String ssid, List<WifiConfiguration> existingConfigs);
1.WifiUtils 工具类
import android.content.Context;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import java.util.List;
public class WifiUtils {
private final WifiManager wifiManager;
public WifiUtils(Context context) {
wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
}
// 检查WiFi是否可用
public boolean isWifiEnabled() {
return wifiManager.isWifiEnabled();
}
// 打开WiFi
public void openWifi() {
if (!wifiManager.isWifiEnabled()) {
wifiManager.setWifiEnabled(true);
}
}
// 关闭WiFi
public void closeWifi() {
if (wifiManager.isWifiEnabled()) {
wifiManager.setWifiEnabled(false);
}
}
// 扫描WiFi网络
public void scanWifi() {
wifiManager.startScan();
}
// 获取扫描到的WiFi列表
public List<WifiConfiguration> getScanResults() {
return wifiManager.getConfiguredNetworks();
}
// 获取当前连接的WiFi
public WifiInfo getConnectedWifiInfo() {
return wifiManager.getConnectionInfo();
}
// 判断是否有当前可用的WiFi连接
public boolean isWifiConnected() {
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
return wifiInfo != null && wifiInfo.getNetworkId() != -1;
}
// 关闭所有连接
public void disconnectWifi() {
wifiManager.disconnect();
}
// 连接WiFi
public void connectToWifi(WifiConfiguration wifiConfig) {
int netId = wifiManager.addNetwork(wifiConfig);
wifiManager.enableNetwork(netId, true);
}
// 移除WiFi
public void removeWifi(int netId) {
wifiManager.removeNetwork(netId);
wifiManager.saveConfiguration();
}
// 添加WiFi到系统
public int addNetwork(WifiConfiguration wifiConfig) {
return wifiManager.addNetwork(wifiConfig);
}
// 创建配置
public WifiConfiguration createWifiConfig(String ssid, String password, int type) {
WifiConfiguration config = new WifiConfiguration();
config.SSID = "\"" + ssid + "\"";
switch (type) {
case 1:
config.hiddenSSID = true;
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
break;
case 2:
config.hiddenSSID = true;
config.wepKeys[0] = "\"" + password + "\"";
config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
config.wepTxKeyIndex = 0;
break;
case 3:
config.preSharedKey = "\"" + password + "\"";
break;
}
return config;
}
// 获取是否已经存在的配置
public WifiConfiguration isExist(String ssid) {
List<WifiConfiguration> existingConfigs = wifiManager.getConfiguredNetworks();
for (WifiConfiguration existingConfig : existingConfigs) {
if (existingConfig.SSID.equals("\"" + ssid + "\"")) {
return existingConfig;
}
}
return null;
}
// 去除同名WIFI
public void removeSameWifi(String ssid) {
List<WifiConfiguration> existingConfigs = wifiManager.getConfiguredNetworks();
for (WifiConfiguration existingConfig : existingConfigs) {
if (existingConfig.SSID.equals("\"" + ssid + "\"")) {
wifiManager.removeNetwork(existingConfig.networkId);
}
}
}
// 判断一个扫描结果中,是否包含了某个名称的WIFI
public boolean isScanResultExist(String ssid, List<WifiConfiguration> existingConfigs) {
for (WifiConfiguration existingConfig : existingConfigs) {
if (existingConfig.SSID.equals("\"" + ssid + "\"")) {
return true;
}
}
return false;
}
// WiFi安全类型枚举
public enum WifiSecurityType {
OPEN, WEP, WPA
}
}
WifiUtils的简单使用实例
import android.os.Bundle;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import java.util.List;
public class MainActivity extends AppCompatActivity {
WifiUtils wifiUtils;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wifiUtils = new WifiUtils(this);
// 检查WiFi是否可用
boolean isWifiEnabled = wifiUtils.isWifiEnabled();
// 打开WiFi
wifiUtils.openWifi();
// 关闭WiFi
wifiUtils.closeWifi();
// 扫描WiFi网络
wifiUtils.scanWifi();
// 获取扫描到的WiFi列表
List<WifiConfiguration> scanResults = wifiUtils.getScanResults();
// 获取当前连接的WiFi
wifiUtils.getConnectedWifiInfo();
// 判断是否有当前可用的WiFi连接
boolean isWifiConnected = wifiUtils.isWifiConnected();
// 关闭所有连接
wifiUtils.disconnectWifi();
// 创建一个新的WiFi配置
WifiUtils.WifiConfiguration wifiConfig = wifiUtils.createWifiConfig("YourSSID", "YourPassword", 3);
// 连接到WiFi
wifiUtils.connectToWifi(wifiConfig);
// 移除WiFi
wifiUtils.removeWifi(0);
// 添加WiFi到系统
int netId = wifiUtils.addNetwork(wifiConfig);
// 获取是否已经存在的配置
WifiUtils.WifiConfiguration existingConfig = wifiUtils.isExist("YourSSID");
// 去除同名WIFI
wifiUtils.removeSameWifi("YourSSID");
// 判断一个扫描结果中,是否包含了某个名称的WIFI
boolean isScanResultExist = wifiUtils.isScanResultExist("YourSSID", scanResults);
// 在这里根据需要进行其他操作
// ...
// 示例:显示Toast提示信息
Toast.makeText(this, "WiFi Enabled: " + isWifiEnabled, Toast.LENGTH_SHORT).show();
}
}
通过使用WifiUtils
工具类,Android开发人员可以轻松地管理和配置WiFi网络,从而提高应用的可靠性和用户体验。这个工具类简化了底层的WiFi管理细节,使得开发者能够更专注于应用的核心功能。在实际开发中,根据具体需求使用WifiUtils
工具类,可以有效地提高开发效率,让WiFi管理变得更加便捷和灵活。