工具类"/>
Android WiFi工具类
✍️作者简介:沫小北/码农小北(专注于Android、Web、TCP/IP等技术方向)
🐳博客主页:开源中国、稀土掘金、51cto博客、博客园、知乎、简书、慕课网、CSDN
🔔如果文章对您有一定的帮助请👉关注✨、点赞👍、收藏📂、评论💬。
🔥如需转载请参考【转载须知】
当开发基于WiFi的Android应用时,对WiFi连接、管理和配置的操作非常重要。为了简化这些操作,我们可以使用一个名为WifiUtils
的工具类。这个工具类提供了一系列方法,可以方便地执行诸如检查WiFi状态、打开或关闭WiFi、扫描可用的WiFi网络、连接到指定的WiFi网络、断开当前连接的WiFi网络等操作。
这个工具类还提供了一些辅助方法,比如获取当前连接的WiFi信息、检查是否有当前可用的WiFi连接、添加WiFi配置到系统、创建WiFi配置、获取是否已经存在的配置、移除同名WiFi、判断扫描结果中是否包含了特定名称的WiFi等。这些方法使得WiFi的管理和配置变得更加便捷和灵活。
使用这个WifiUtils
工具类,我们可以轻松地在Android应用中执行WiFi相关的操作,无论是连接到特定的WiFi网络,还是管理已经连接的网络,都可以通过简单的调用实现。这样可以极大地简化了开发过程,提高了应用的可靠性和用户体验。WifiUtils
工具类为Android开发人员提供了一个简单而强大的工具,可以在开发过程中更方便地管理和配置WiFi网络。通过使用这个工具类,开发人员可以更专注于应用的核心功能,而无需过多关注底层的WiFi管理细节。
1.WifiUtils 工具类
import android.content.Context;
import android.wifi.WifiConfiguration;
import android.wifi.WifiInfo;
import android.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();}// 打开WiFipublic void openWifi() {if (!wifiManager.isWifiEnabled()) {wifiManager.setWifiEnabled(true);}}// 关闭WiFipublic void closeWifi() {if (wifiManager.isWifiEnabled()) {wifiManager.setWifiEnabled(false);}}// 扫描WiFi网络public void scanWifi() {wifiManager.startScan();}// 获取扫描到的WiFi列表public List<WifiConfiguration> getScanResults() {return wifiManager.getConfiguredNetworks();}// 获取当前连接的WiFipublic WifiInfo getConnectedWifiInfo() {return wifiManager.getConnectionInfo();}// 判断是否有当前可用的WiFi连接public boolean isWifiConnected() {WifiInfo wifiInfo = wifiManager.getConnectionInfo();return wifiInfo != null && wifiInfo.getNetworkId() != -1;}// 关闭所有连接public void disconnectWifi() {wifiManager.disconnect();}// 连接WiFipublic void connectToWifi(WifiConfiguration wifiConfig) {int netId = wifiManager.addNetwork(wifiConfig);wifiManager.enableNetwork(netId, true);}// 移除WiFipublic 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;}// 去除同名WIFIpublic void removeSameWifi(String ssid) {List<WifiConfiguration> existingConfigs = wifiManager.getConfiguredNetworks();for (WifiConfiguration existingConfig : existingConfigs) {if (existingConfig.SSID.equals("\"" + ssid + "\"")) {wifiManager.removeNetwork(existingConfigworkId);}}}// 判断一个扫描结果中,是否包含了某个名称的WIFIpublic 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}
}
2.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;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);wifiUtils = new WifiUtils(this);// 检查WiFi是否可用boolean isWifiEnabled = wifiUtils.isWifiEnabled();// 打开WiFiwifiUtils.openWifi();// 关闭WiFiwifiUtils.closeWifi();// 扫描WiFi网络wifiUtils.scanWifi();// 获取扫描到的WiFi列表List<WifiConfiguration> scanResults = wifiUtils.getScanResults();// 获取当前连接的WiFiwifiUtils.getConnectedWifiInfo();// 判断是否有当前可用的WiFi连接boolean isWifiConnected = wifiUtils.isWifiConnected();// 关闭所有连接wifiUtils.disconnectWifi();// 创建一个新的WiFi配置WifiUtils.WifiConfiguration wifiConfig = wifiUtils.createWifiConfig("YourSSID", "YourPassword", 3);// 连接到WiFiwifiUtils.connectToWifi(wifiConfig);// 移除WiFiwifiUtils.removeWifi(0);// 添加WiFi到系统int netId = wifiUtils.addNetwork(wifiConfig);// 获取是否已经存在的配置WifiUtils.WifiConfiguration existingConfig = wifiUtils.isExist("YourSSID");// 去除同名WIFIwifiUtils.removeSameWifi("YourSSID");// 判断一个扫描结果中,是否包含了某个名称的WIFIboolean isScanResultExist = wifiUtils.isScanResultExist("YourSSID", scanResults);// 在这里根据需要进行其他操作// ...// 示例:显示Toast提示信息Toast.makeText(this, "WiFi Enabled: " + isWifiEnabled, Toast.LENGTH_SHORT).show();}
}
更多推荐
Android WiFi工具类
发布评论