简化Android应用开发:使用WifiUtils工具类轻松管理WiFi网络

✍️作者简介:小北编程(专注于HarmonyOS、Android、Java、Web、TCP/IP等技术方向)
🐳博客主页:开源中国稀土掘金51cto博客博客园知乎简书慕课网CSDN
🔔如果文章对您有一定的帮助请👉关注✨、点赞👍、收藏📂、评论💬。
🔥如需转载请参考【转载须知】

随着移动应用的普及,对于WiFi连接、管理和配置的需求日益增加。为了简化这些操作,我们可以利用一个名为WifiUtils的工具类。这个工具类提供了一系列方法,可以方便地执行WiFi状态检查、WiFi打开或关闭、扫描可用的WiFi网络、连接到指定的WiFi网络、断开当前连接的WiFi网络等操作。

WifiUtils工具类介绍

WifiUtils工具类的核心功能包括:

  1. 检查WiFi状态
    public boolean isWifiEnabled();
    
  2. 打开WiFi
    public void openWifi();
    
  3. 关闭WiFi
    public void closeWifi();
    
  4. 扫描WiFi网络
    public void scanWifi();
    
  5. 获取扫描到的WiFi列表
    public List<WifiConfiguration> getScanResults();
    
  6. 获取当前连接的WiFi信息
    public WifiInfo getConnectedWifiInfo();
    
  7. 判断是否有当前可用的WiFi连接
    public boolean isWifiConnected();
    
  8. 关闭所有连接
    public void disconnectWifi();
    
  9. 连接到WiFi
    public void connectToWifi(WifiConfiguration wifiConfig);
    
  10. 移除WiFi
    public void removeWifi(int netId);
    
  11. 添加WiFi到系统
    public int addNetwork(WifiConfiguration wifiConfig);
    
  12. 创建WiFi配置
    public WifiConfiguration createWifiConfig(String ssid, String password, int type);
    
  13. 获取是否已经存在的配置
    public WifiConfiguration isExist(String ssid);
    
  14. 去除同名WiFi
    public void removeSameWifi(String ssid);
    
  15. 判断扫描结果中是否包含了特定名称的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管理变得更加便捷和灵活。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小北编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值