本文主要介绍通过广播消息监听网络状态的变化,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