为了账号安全,请及时绑定邮箱和手机立即绑定

Android WiFi工具类

当开发基于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.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
    }
}


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;

    @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();
    }
}


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消