Android 应用内连接指定 WIFI

这个博客主要展示了如何在Android中实现WiFi连接管理,包括创建WiFi配置、连接指定网络,并通过BroadcastReceiver监听WiFi连接状态。同时,提供了检查WiFi是否为5G频段、位置服务是否开启等辅助功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

广播过滤Action

WifiManager.NETWORK_STATE_CHANGED_ACTION

工具类

package com.yw.wifipage.wifi;

import android.content.Context;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Handler;

import com.yw.wifipage.receiver.WifiChangeReceiver;

public class WifiConnectUtil {

    private boolean isConnect = false;
    private WifiChangeReceiver receiver;

    public void connect(Context context, String ssid, String bssid, String password, int timeOut, IConnectListener listener) {

        String mssid = ssid.replace("\"", "");

        WifiConfiguration wifiCong = new WifiConfiguration();
        wifiCong.allowedAuthAlgorithms.clear();
        wifiCong.allowedGroupCiphers.clear();
        wifiCong.allowedKeyManagement.clear();
        wifiCong.allowedPairwiseCiphers.clear();
        wifiCong.allowedProtocols.clear();
        wifiCong.SSID = "\"" + mssid + "\"";
        wifiCong.BSSID = bssid;
        wifiCong.preSharedKey = "\"" + password + "\"";//WPA-PSK密码
        wifiCong.hiddenSSID = false;
        wifiCong.status = WifiConfiguration.Status.ENABLED;
        int id = MyNetworkUtil.getInstance().getWifiManager().addNetwork(wifiCong);
        MyNetworkUtil.getInstance().getWifiManager().enableNetwork(id, true);

        //注册广播快速监听连接状态
        receiver = new WifiChangeReceiver(networkInfo -> {
            if (networkInfo.getDetailedState() == NetworkInfo.DetailedState.CONNECTED && networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
                WifiInfo wifiInfo = MyNetworkUtil.getInstance().getWifiInfo();
                if (wifiInfo.getSSID().replace("\"", "").equals(mssid)) {
                    isConnect = true;
                    if (receiver != null) {
                        context.unregisterReceiver(receiver);
                        receiver = null;
                        listener.onConnected();
                    }
                }
            }
        });

        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
        context.registerReceiver(receiver, intentFilter);
        //延时监听变化
        new Han
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值