Android控制WIFI相关操作

Android控制WIFI相关操作

 

在XML文件中添加权限:

  1. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

  2. <uses-permission android:name="android.permission.WAKE_LOCK"/>

  3. <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>

Wifi工具类:

 

  1. package com.example.mywifi;

  2.  
  3. import java.net.Inet4Address;

  4. import java.util.List;

  5.  
  6. import android.content.Context;

  7. import android.net.wifi.ScanResult;

  8. import android.net.wifi.WifiConfiguration;

  9. import android.net.wifi.WifiInfo;

  10. import android.net.wifi.WifiManager;

  11. import android.net.wifi.WifiManager.WifiLock;

  12.  
  13. public class WifiOpenHelper {

  14. // 定义WifiManager对象

  15. private WifiManager mWifiManager;

  16. // 定义WifiInfo对象

  17. private WifiInfo mWifiInfo;

  18. // 扫描出的网络连接列表

  19. private List<ScanResult> mWifiList;

  20. // 网络连接列表

  21. private List<WifiConfiguration> mWifiConfiguration;

  22. // 定义一个WifiLock

  23. WifiLock mWifiLock;

  24.  
  25. // 构造器

  26. public WifiOpenHelper(Context context) {

  27. // 取得WifiManager对象

  28. mWifiManager = (WifiManager) context

  29. .getSystemService(Context.WIFI_SERVICE);

  30. // 取得WifiInfo对象

  31. mWifiInfo = mWifiManager.getConnectionInfo();

  32. }

  33.  
  34. // 打开WIFI

  35. public void openWifi() {

  36. if (!mWifiManager.isWifiEnabled()) {

  37. mWifiManager.setWifiEnabled(true);

  38. }

  39. }

  40.  
  41. // 断开当前网络

  42. public void disconnectWifi() {

  43. if (!mWifiManager.isWifiEnabled()) {

  44. mWifiManager.disconnect();

  45. }

  46. }

  47.  
  48. // 关闭WIFI

  49. public void closeWifi() {

  50. if (mWifiManager.isWifiEnabled()) {

  51. mWifiManager.setWifiEnabled(false);

  52. }

  53. }

  54.  
  55. // 检查当前WIFI状态

  56. public int checkState() {

  57. return mWifiManager.getWifiState();

  58. }

  59.  
  60. // 锁定WifiLock

  61. public void acquireWifiLock() {

  62. mWifiLock.acquire();

  63. }

  64.  
  65. // 解锁WifiLock

  66. public void releaseWifiLock() {

  67. // 判断时候锁定

  68. if (mWifiLock.isHeld()) {

  69. mWifiLock.acquire();

  70. }

  71. }

  72.  
  73. // 创建一个WifiLock

  74. public void creatWifiLock() {

  75. mWifiLock = mWifiManager.createWifiLock("Test");

  76. }

  77.  
  78. // 得到配置好的网络

  79. public List<WifiConfiguration> getConfiguration() {

  80. return mWifiConfiguration;

  81. }

  82.  
  83. // 指定配置好的网络进行连接

  84. public void connectConfiguration(int index) {

  85. // 索引大于配置好的网络索引返回

  86. if (index > mWifiConfiguration.size()) {

  87. return;

  88. }

  89. // 连接配置好的指定ID的网络

  90. mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId,

  91. true);

  92. }

  93.  
  94. public void startScan() {

  95. mWifiManager.startScan();

  96. // 得到扫描结果

  97. mWifiList = mWifiManager.getScanResults();

  98. // 得到配置好的网络连接

  99. mWifiConfiguration = mWifiManager.getConfiguredNetworks();

  100. }

  101.  
  102. // 得到网络列表

  103. public List<ScanResult> getWifiList() {

  104. return mWifiList;

  105. }

  106.  
  107. // 查看扫描结果

  108. public StringBuilder lookUpScan() {

  109. StringBuilder stringBuilder = new StringBuilder();

  110. for (int i = 0; i < mWifiList.size(); i++) {

  111. stringBuilder.append("Index_" + Integer.valueOf(i + 1).toString()

  112. + ":");

  113. // 将ScanResult信息转换成一个字符串包

  114. // 其中把包括:BSSID、SSID、capabilities、frequency、level

  115. stringBuilder.append((mWifiList.get(i)).toString());

  116. stringBuilder.append("/n");

  117. }

  118. return stringBuilder;

  119. }

  120.  
  121. // 得到MAC地址

  122. public String getMacAddress() {

  123. return (mWifiInfo == null) ? "NULL" : mWifiInfo.getMacAddress();

  124. }

  125.  
  126. // 得到接入点的BSSID

  127. public String getBSSID() {

  128. return (mWifiInfo == null) ? "NULL" : mWifiInfo.getBSSID();

  129. }

  130.  
  131. // 得到IP地址

  132. public int getIPAddress() {

  133. return (mWifiInfo == null) ? 0 : mWifiInfo.getIpAddress();

  134. }

  135. // 将int类型的IP转换成字符串形式的IP

  136. public String ipIntToString(int ip) {

  137. try {

  138. byte[] bytes = new byte[4];

  139. bytes[0] = (byte) (0xff & ip);

  140. bytes[1] = (byte) ((0xff00 & ip) >> 8);

  141. bytes[2] = (byte) ((0xff0000 & ip) >> 16);

  142. bytes[3] = (byte) ((0xff000000 & ip) >> 24);

  143. return Inet4Address.getByAddress(bytes).getHostAddress();

  144. } catch (Exception e) {

  145. return "";

  146. }

  147. }

  148.  
  149. // 得到连接的ID

  150. public int getNetworkId() {

  151. return (mWifiInfo == null) ? 0 : mWifiInfo.getNetworkId();

  152. }

  153.  
  154. // 得到WifiInfo的所有信息包

  155. public String getWifiInfo() {

  156. return (mWifiInfo == null) ? "NULL" : mWifiInfo.toString();

  157. }

  158.  
  159. // 添加一个网络并连接

  160. public void addNetwork(WifiConfiguration wcg) {

  161. int wcgID = mWifiManager.addNetwork(wcg);

  162. boolean b = mWifiManager.enableNetwork(wcgID, true);

  163. System.out.println("a--" + wcgID);

  164. System.out.println("b--" + b);

  165. }

  166.  
  167. // 断开指定ID的网络

  168. public void disconnectWifi(int netId) {

  169. mWifiManager.disableNetwork(netId);

  170. mWifiManager.disconnect();

  171. }

  172.  
  173. public WifiConfiguration CreateWifiInfo(String SSID, String Password,

  174. int Type) {

  175. WifiConfiguration config = new WifiConfiguration();

  176. config.allowedAuthAlgorithms.clear();

  177. config.allowedGroupCiphers.clear();

  178. config.allowedKeyManagement.clear();

  179. config.allowedPairwiseCiphers.clear();

  180. config.allowedProtocols.clear();

  181. config.SSID = "\"" + SSID + "\"";

  182.  
  183. WifiConfiguration tempConfig = this.IsExsits(SSID);

  184. if (tempConfig != null) {

  185. mWifiManager.removeNetwork(tempConfig.networkId);

  186. }

  187.  
  188. if (Type == 1) // WIFICIPHER_NOPASS

  189. {

  190. config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);

  191. }

  192. if (Type == 2) // WIFICIPHER_WEP

  193. {

  194. config.hiddenSSID = true;

  195. config.wepKeys[0] = "\"" + Password + "\"";

  196. config.allowedAuthAlgorithms

  197. .set(WifiConfiguration.AuthAlgorithm.SHARED);

  198. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);

  199. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);

  200. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);

  201. config.allowedGroupCiphers

  202. .set(WifiConfiguration.GroupCipher.WEP104);

  203. config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);

  204. config.wepTxKeyIndex = 0;

  205. }

  206. if (Type == 3) // WIFICIPHER_WPA

  207. {

  208. config.preSharedKey = "\"" + Password + "\"";

  209. config.hiddenSSID = true;

  210. config.allowedAuthAlgorithms

  211. .set(WifiConfiguration.AuthAlgorithm.OPEN);

  212. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);

  213. config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);

  214. config.allowedPairwiseCiphers

  215. .set(WifiConfiguration.PairwiseCipher.TKIP);

  216. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);

  217. config.allowedPairwiseCiphers

  218. .set(WifiConfiguration.PairwiseCipher.CCMP);

  219. config.status = WifiConfiguration.Status.ENABLED;

  220. }

  221. return config;

  222. }

  223.  
  224. private WifiConfiguration IsExsits(String SSID) {

  225. List<WifiConfiguration> existingConfigs = mWifiManager

  226. .getConfiguredNetworks();

  227. for (WifiConfiguration existingConfig : existingConfigs) {

  228. if (existingConfig.SSID.equals("\"" + SSID + "\"")) {

  229. return existingConfig;

  230. }

  231. }

  232. return null;

  233. }

  234.  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值