Android连接WiFi
生活随笔
收集整理的這篇文章主要介紹了
Android连接WiFi
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
WiFi打開、連接、關(guān)閉
/*** WiFi連接管理* 申請(qǐng)權(quán)限* <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>* <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>* <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>* <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>* 動(dòng)態(tài)權(quán)限* 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);}}/*** 關(guān)閉WiFi*/public void closeWifi(){if (wifiManager != null && isWifiEnable()){wifiManager.setWifiEnabled(false);}}/*** 獲取WiFi列表* @return*/public List<ScanResult> getWifiList(){List<ScanResult> 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設(shè)置* @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;}/*** 得到配置好的網(wǎng)絡(luò)連接* @param ssid* @return*/private WifiConfiguration isExist(String ssid) {List<WifiConfiguration> configs = wifiManager.getConfiguredNetworks();for (WifiConfiguration config : configs) {if (config.SSID.equals("\""+ssid+"\"")) {return config;}}return null;} } <receiver android:name=".MyBroadcastReceiver"><intent-filter android:priority="1000"><action android:name="android.intent.action.CONFIGURATION_CHANGED"/><action android:name="android.net.wifi.WIFI_STATE_CHANGED" /><action android:name="android.net.wifi.STATE_CHANGE" /></intent-filter></receiver> public class MyBroadcastReceiver extends BroadcastReceiver {@Overridepublic 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);}}} }總結(jié)
以上是生活随笔為你收集整理的Android连接WiFi的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 线性代数复习总结——基本概念
- 下一篇: 汉语编程能给我们带来什么?