/*** wifi设置工具类**/
public class WIFIUtil {// 定义WifiManager对象private WifiManager mWifiManager;private DhcpInfo dhcpInfo;private List<WifiConfiguration> mWifiConfigurations;private ConnectivityManager mConnectivityManager;public WifiManager getmWifiManager() {return mWifiManager;}// 定义WifiInfo对象private WifiInfo mWifiInfo;Context context;// 扫描出的网络连接列表private List<ScanResult> mWifiList;// 构造器public WIFIUtil(Context context) {// 取得WifiManager对象mWifiManager = (WifiManager) SystemService(Context.WIFI_SERVICE);// 取得WifiInfo对象mWifiInfo = ConnectionInfo();dhcpInfo = DhcpInfo();mWifiConfigurationsConfiguredNetworks();mConnectivityManager = (SystemService(Context.CONNECTIVITY_SERVICE);t = context;}public void startScan(){mWifiManager.startScan();mWifiListScanResults();}/*** 获取扫描到的wifi列表*/public List<ScanResult> getWifiList(){return mWifiList;}// 得到MAC地址public String GetMacAddress() {return (mWifiInfo == null) ? "NULL" : MacAddress();}// 得到接入点的BSSIDpublic String GetBSSID() {return (mWifiInfo == null) ? "NULL" : BSSID();}// 得到接入点的SSIDpublic String GetSSID() {return (mWifiInfo == null) ? "NULL" : SSID();}// 得到接入点的IP地址public String getIPAddress() {return (mWifiInfo == null) ? "NULL" : intToIp(dhcpInfo.ipAddress);}// 得到接入点的子网掩码public String getNetMask() {return (mWifiInfo == null) ? "NULL" : intToIp(dhcpInfomask);}// 关闭WIFIpublic void CloseWifi() {if (!mWifiManager.isWifiEnabled()) {mWifiManager.setWifiEnabled(false);}}//判断wifi是否连接public static boolean isWifiConnect(Context context) {ConnectivityManager connManager = (ConnectivityManager) SystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo mWifi = NetworkInfo(ConnectivityManager.TYPE_WIFI);State() == NetworkInfo.State.CONNECTED;}public String getSSID() {if (mWifiInfo != null) {String temp = SSID();if (temp != null && (temp.startsWith(""") && dsWith("""))) {temp = temp.substring(1, temp.length() - 1);return temp;}return temp;} else {return "";}}// 定义几种加密方式,一种是WEP,一种是WPA,还有没有密码的情况/** public enum WifiCipherType { NONE,WEP,WPA,EAP }*/// 判断wifi是否加密:public static String getSecuritys(ScanResult result) {if (ains("WEP")) {return "WEP";} else if (ains("PSK")) {return "WPA";} else if (ains("EAP")) {return "EAP";}return "NONE";}//获取wifi是那个加密类型public String getWifiCipherType(Context context, String ssid) {String type = null;mWifiManager = (WifiManager) SystemService(Context.WIFI_SERVICE);mWifiList = ScanResults();if (mWifiList != null) {for (int i = 0; i < mWifiList.size(); i++) {ScanResult sr = (i);if (sr.SSID.equals(ssid))type = getSecuritys(sr);}}if (type == null) {type = "WPA";}return type;}//获取wifi的信号大小public int getSignal(Context context, String ssid) {int signal = 100;mWifiManager = (WifiManager) SystemService(Context.WIFI_SERVICE);mWifiList = ScanResults();if (mWifiList != null) {for (int i = 0; i < mWifiList.size(); i++) {ScanResult sr = (i);if (sr.SSID.equals(ssid))signal = Math.abs(sr.level);}}return signal;}// 打开WIFIpublic boolean OpenWifi() {boolean bRet = true;if (!mWifiManager.isWifiEnabled()) {bRet = mWifiManager.setWifiEnabled(true);while (mWifiList == null || mWifiList.size() == 0) {try {mWifiManager.startScan();Thread.currentThread().sleep(1000);mWifiList = ScanResults();} catch (InterruptedException e) {e.printStackTrace();}}}return bRet;}//断判某个wifi是否是连接成功的那个wifipublic boolean isConnectedWifi(Context context, String myssid){mWifiManager = (WifiManager) ApplicationContext().getSystemService(Context.WIFI_SERVICE);if (isWifiConnect(context)) {WifiInfo wifiInfo = ConnectionInfo();String ssid = SSID();Log.i("MainActivity", "isConnectedWifi: "+ssid);if (ssid != null && ains(myssid)) {return true;} else {return false;}}else{return false;}}public String getConnectWifiSsid(){mWifiManager = (WifiManager) ApplicationContext().getSystemService(Context.WIFI_SERVICE);WifiInfo wifiInfo = ConnectionInfo();Log.d("wifiInfo", String());Log.d("SSID",SSID());SSID();}// 查看以前是否也配置过这个网络private WifiConfiguration IsExsits(String SSID) {List<WifiConfiguration> existingConfigs = ConfiguredNetworks();if (existingConfigs != null) {for (WifiConfiguration existingConfig : existingConfigs) {if (existingConfig.SSID.equals(""" + SSID + """)) {return existingConfig;}}}return null;}//删除原来的所有连接private void deleteWifiConnect() {List<WifiConfiguration> existingConfigs = ConfiguredNetworks();if (existingConfigs != null) {for (WifiConfiguration existingConfig : existingConfigs) {mWifiManager.disableNetwork(existingConfigworkId);}}}// 提供一个外部接口,传入要连接的无线网public boolean connectNet(String SSID, String Password, String Type) {WifiConfiguration tempConfig = this.IsExsits(SSID);if (tempConfig != null) {veNetwork(tempConfigworkId);}
// deleteWifiConnect();
// forgetWifi(SSID);WifiConfiguration wifiConfig = this.CreateWifiInfo(SSID, Password, Type);int netID = mWifiManager.addNetwork(wifiConfig);boolean bRet = ableNetwork(netID, true);ect();return bRet;}public boolean connectNewNet(String SSID, String Password, int Type){WifiConfiguration configuration = ateWifiInfo(SSID, Password, Type);int wcgId=mWifiManager.addNetwork(configuration);ableNetwork(wcgId, true);boolean reconnect = ect();return reconnect;}private WifiConfiguration CreateWifiInfo(String SSID, String Password,String Type) {WifiConfiguration config = new WifiConfiguration();config.allowedAuthAlgorithms.clear();config.allowedGroupCiphers.clear();config.allowedKeyManagement.clear();config.allowedPairwiseCiphers.clear();config.allowedProtocols.clear();config.SSID = """ + SSID + """;if (Type.equals("NONE")) {config.wepKeys[0] = "";config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);config.wepTxKeyIndex = 0;} else if (Type.equals("WEP")) {config.preSharedKey = """ + Password + """;config.hiddenSSID = true;config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);config.wepTxKeyIndex = 0;} else if (Type.equals("WPA")) {config.preSharedKey = """ + Password + """;config.hiddenSSID = true;config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);config.allowedProtocols.set(WifiConfiguration.Protocol.RSN);// 对应wpa2加密方式config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);// 对应wpa加密方式config.status = WifiConfiguration.Status.ENABLED;} else if (Type.equals("EAP")) {config.preSharedKey = """ + Password + """;config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_EAP);config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.IEEE8021X);// 20120723新增}return config;}public WifiConfiguration createWifiInfo(String SSID, String Password, int Type){WifiConfiguration config = new WifiConfiguration();config.allowedAuthAlgorithms.clear();config.allowedGroupCiphers.clear();config.allowedKeyManagement.clear();config.allowedPairwiseCiphers.clear();config.allowedProtocols.clear();config.SSID = """ + SSID + """;if(Type == 1) //WIFICIPHER_NOPASS{config.hiddenSSID = true;config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);}if(Type == 2) //WIFICIPHER_WEP{config.hiddenSSID = true;config.wepKeys[0]= """+Password+""";config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);config.wepTxKeyIndex = 0;}if(Type == 3) //WIFICIPHER_WPA{config.preSharedKey = """+Password+""";config.hiddenSSID = true;config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);config.status = WifiConfiguration.Status.ENABLED;}return config;}public void addNetWork(WifiConfiguration configuration){//mWifiManager.saveConfiguration();}/*** 移除wifi,因为权限,无法移除的时候,需要手动去翻wifi列表删除* 注意:!!!只能移除自己应用创建的wifi。* 删除掉app,再安装的,都不算自己应用,具体看removeNetwork源码**/public boolean forgetWifi(String SSID){WifiConfiguration tempConfig = this.IsExsits(SSID);if (tempConfig != null) {Log.d("howard","tempConfigworkId="+tempConfigworkId);return veNetwork(tempConfigworkId);//mWifiManager.saveConfiguration();}return false;}private String intToIp(int paramInt) {return (paramInt & 0xFF) + "." + (0xFF & paramInt >> 8) + "." + (0xFF & paramInt >> 16) + "."+ (0xFF & paramInt >> 24);}public boolean addNetWork(String SSID, String password, int Type){int netId = -1;/*先执行删除wifi操作,1.如果删除的成功说明这个wifi配置是由本APP配置出来的;2.这样可以避免密码错误之后,同名字的wifi配置存在,无法连接;3.wifi直接连接成功过,不删除也能用, netId = getExitsWifiConfig(SSID)workId;*/if (forgetWifi(SSID)){//移除成功,就新建一个netId = mWifiManager.addNetwork(createWifiInfo(SSID, password, Type));} else{//删除不成功,要么这个wifi配置以前就存在过,要么是还没连接过的if (getExitsWifiConfig(SSID) != null){//这个wifi是连接过的,如果这个wifi在连接之后改了密码,那就只能手动去删除了netId = getExitsWifiConfig(SSID)workId;} else {//没连接过的,新建一个wifi配置netId = mWifiManager.addNetwork(createWifiInfo(SSID, password, Type));}}//这个方法的第一个参数是需要连接wifi网络的networkId,第二个参数是指连接当前wifi网络是否需要断开其他网络//无论是否连接上,都返回true。。。。boolean enableNetwork = ableNetwork(netId, true);return enableNetwork;}/*** 获取配置过的wifiConfiguration*/public WifiConfiguration getExitsWifiConfig(String SSID){List<WifiConfiguration> wifiConfigurationList = ConfiguredNetworks();for (WifiConfiguration wifiConfiguration : wifiConfigurationList){if (wifiConfiguration.SSID.equals(""" + SSID + """)){return wifiConfiguration;}}return null;}}
本文发布于:2024-01-28 21:14:11,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170644765610328.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |