Wifi可以自动打开并连接指定的网络(Android)

本文主要介绍通过广播消息监听网络状态的变化,Wifi可以自动打开,而后连接指定的Wifi网络。其中包括屏幕灭屏广播、字符串去除双引号的技术点。亲测可用,收藏发布到此,供大家借鉴学习。

1. 工具类WifiAutoConnectManager

import android.annotation.SuppressLint;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.text.TextUtils;
import android.util.Log;
import java.util.List;

/**
 * Description:Wifi可以自动打开并连接指定的Wifi网络(工具类)
 */
public class WifiAutoConnectManager {
    private static final String TAG = WifiAutoConnectManager.class.getSimpleName();

    WifiManager wifiManager;

    // 定义几种加密方式,一种是WEP,一种是WPA,还有没有密码的情况
    public enum WifiCipherType {
        WIFICIPHER_WEP, WIFICIPHER_WPA, WIFICIPHER_NOPASS, WIFICIPHER_INVALID
    }

    // 构造函数
    public WifiAutoConnectManager(WifiManager wifiManager) {
        this.wifiManager = wifiManager;
    }

    // 提供一个外部接口,传入要连接的无线网
    public void connectWifi(String ssID, String passWord, WifiCipherType type) {
        Log.d(TAG,"connect:" + ssID + ","  + passWord + ","  + type);
        Thread thread = new Thread(new ConnectRunnable(ssID, passWord, type));
        thread.start();
    }

    // 查看以前是否也配置过这个网络
    private WifiConfiguration isExsits(String ssID) {
        Log.d(TAG,"isExsits:" + ssID);

        @SuppressLint("MissingPermission")
        List<WifiConfiguration> existingConfigs = wifiManager.getConfiguredNetworks();
        for (WifiConfiguration existingConfig : existingConfigs) {
            if (existingConfig.SSID.equals("\"" + ssID + "\"")) {
                return existingConfig;
            }
        }
        return null;
    }

    private WifiConfiguration createWifiInfo(String ssID, String passWord, WifiCipherType type) {
        Log.d(TAG,"createWifiInfo:" + ssID + ","  + passWord + ","  + type);
        WifiConfiguration config = new WifiConfiguration();
        config.allowedAuthAlgorithms.clear();
        config.allowedGroupCiphers.clear();
        config.allowedKeyManagement.clear();
        config.allowedPairwiseCiphers.clear();
        config.allowedProtocols.clear();
        config.SSID = "\"" + ssID + "\"";

        // NOPASS
        if (type == WifiCipherType.WIFICIPHER_NOPASS) {
            config.wepKeys[0] = "";
            config.allowedKeyManagement.set(WifiCon
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值