Android连接WiFi
16lz
2021-01-23
WiFi打开、连接、关闭
/** * WiFi连接管理 * 申请权限 * * * * * 动态权限 * Manifest.permission.ACCESS_COARSE_LOCATION * Manifest.permission.ACCESS_FINE_LOCATION * */public class WifiUtils { private static WifiUtils utils = null; public WifiUtils(Context context){ wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); } public static WifiUtils getInstance(Context context){ if (utils == null){ synchronized (WifiUtils.class){ if (utils == null){ utils = new WifiUtils(context); } } } return utils; } private WifiManager wifiManager; /** * wifi是否打开 * @return */ public boolean isWifiEnable(){ boolean isEnable = false; if (wifiManager != null){ if (wifiManager.isWifiEnabled()){ isEnable = true; } } return isEnable; } /** * 打开WiFi */ public void openWifi(){ if (wifiManager != null && !isWifiEnable()){ wifiManager.setWifiEnabled(true); } } /** * 关闭WiFi */ public void closeWifi(){ if (wifiManager != null && isWifiEnable()){ wifiManager.setWifiEnabled(false); } } /** * 获取WiFi列表 * @return */ public List getWifiList(){ List resultList = new ArrayList<>(); if (wifiManager != null && isWifiEnable()){ resultList.addAll(wifiManager.getScanResults()); } return resultList; } /** * 有密码连接 * @param ssid * @param pws */ public void connectWifiPws(String ssid, String pws){ wifiManager.disableNetwork(wifiManager.getConnectionInfo().getNetworkId()); int netId = wifiManager.addNetwork(getWifiConfig(ssid, pws, true)); wifiManager.enableNetwork(netId, true); } /** * 无密码连接 * @param ssid */ public void connectWifiNoPws(String ssid){ wifiManager.disableNetwork(wifiManager.getConnectionInfo().getNetworkId()); int netId = wifiManager.addNetwork(getWifiConfig(ssid, "", false)); wifiManager.enableNetwork(netId, true); } /** * wifi设置 * @param ssid * @param pws * @param isHasPws */ private WifiConfiguration getWifiConfig(String ssid, String pws, boolean isHasPws){ WifiConfiguration config = new WifiConfiguration(); config.allowedAuthAlgorithms.clear(); config.allowedGroupCiphers.clear(); config.allowedKeyManagement.clear(); config.allowedPairwiseCiphers.clear(); config.allowedProtocols.clear(); config.SSID = "\"" + ssid + "\""; WifiConfiguration tempConfig = isExist(ssid); if(tempConfig != null) { wifiManager.removeNetwork(tempConfig.networkId); } if (isHasPws){ config.preSharedKey = "\""+pws+"\""; 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; }else { config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); } return config; } /** * 得到配置好的网络连接 * @param ssid * @return */ private WifiConfiguration isExist(String ssid) { List configs = wifiManager.getConfiguredNetworks(); for (WifiConfiguration config : configs) { if (config.SSID.equals("\""+ssid+"\"")) { return config; } } return null; }}
public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent != null && WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(intent.getAction())){ Log.e("======", "NETWORK_STATE_CHANGED_ACTION"); Parcelable parcelable = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); if (parcelable != null){ NetworkInfo networkInfo = (NetworkInfo) parcelable; NetworkInfo.State state = networkInfo.getState(); boolean isConnect = state == NetworkInfo.State.CONNECTED; Log.e("======", "isConnect=" + isConnect); } } }}
更多相关文章
- Android 消息通知栏Notification使用和权限
- Android动态权限判断以及动态权限申请
- Android 访问权限许可大全
- android 模拟器获取root权限的方法
- Android登录页面制作并且记住账号密码
- Android 仿微信支付密码界面
- 修改Android系统目录的读写权限命令
- Android 6.0权限处理问题
- android 仿ios数字密码解锁界面