private WifiManager mWifiManager; mWifiManager = (WifiManager) this.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
1.判断当前是否连着wifi:
mWifiManager.isWifiEnabled()
2.获取WiFi相关信息:
//获取bssid String bssid = mWifiManager.getConnectionInfo().getBSSID(); //获取wifi名称 String wifiSsidNameCharset = getWifiSsidNameCharset(mWifiManager.getConnectionInfo()); //获取网络id int networkId = mWifiManager.getConnectionInfo().getNetworkId(); //判断是否5G boolean is5g = is5GHz(getFrequency(mWifiManager));
/** * 判断wifi是否为5G * * @param freq * @return */ public static boolean is5GHz(int freq) { return freq > 4900 && freq < 5900; } /** * 兼容 android 5.0以下的 */ public static int getFrequency(WifiManager wifiManager) { int fre = -1; WifiInfo wifiInfo = wifiManager.getConnectionInfo(); String tempSSID = wifiInfo.getSSID(); if (tempSSID != null && tempSSID.length() > 2) { if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.LOLLIPOP) { fre = wifiInfo.getFrequency(); } else { List<ScanResult> scanResults = wifiManager.getScanResults(); for (ScanResult scanResult : scanResults) { if (scanResult.SSID.equals(tempSSID) || scanResult.SSID.equals(tempSSID.replaceAll("\"", ""))) { fre = scanResult.frequency; break; } } } } return fre; } public String getWifiSsidNameCharset(WifiInfo wifiInfo) { try { Field wifiSsidfield = WifiInfo.class .getDeclaredField("mWifiSsid"); wifiSsidfield.setAccessible(true); Class<?> wifiSsidClass = wifiSsidfield.getType(); Object wifiSsid = wifiSsidfield.get(wifiInfo); Method method = wifiSsidClass .getDeclaredMethod("getOctets"); byte[] bytes = (byte[]) method.invoke(wifiSsid); return new String(bytes, "UTF-8"); } catch (Exception e) { } return null; }
3.跳转到wifi设置页面:
public static void switchToWLANSetting(Context context) { if (null == context) return; Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS); if (!(context instanceof Activity)) { intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); } context.startActivity(intent); }