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. import java.net.Inet4Address;

  3. import java.util.List;

  4. import android.content.Context;

  5. import android.net.wifi.ScanResult;

  6. import android.net.wifi.WifiConfiguration;

  7. import android.net.wifi.WifiInfo;

  8. import android.net.wifi.WifiManager;

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

  10. public class WifiOpenHelper {

  11. // 定义WifiManager对象

  12. private WifiManager mWifiManager;

  13. // 定义WifiInfo对象

  14. private WifiInfo mWifiInfo;

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

  16. private List<ScanResult> mWifiList;

  17. // 网络连接列表

  18. private List<WifiConfiguration> mWifiConfiguration;

  19. // 定义一个WifiLock

  20. WifiLock mWifiLock;

  21. // 构造器

  22. public WifiOpenHelper(Context context) {

  23. // 取得WifiManager对象

  24. mWifiManager = (WifiManager) context

  25. .getSystemService(Context.WIFI_SERVICE);

  26. // 取得WifiInfo对象

  27. mWifiInfo = mWifiManager.getConnectionInfo();

  28. }

  29. // 打开WIFI

  30. public void openWifi() {

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

  32. mWifiManager.setWifiEnabled(true);

  33. }

  34. }

  35. // 断开当前网络

  36. public void disconnectWifi() {

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

  38. mWifiManager.disconnect();

  39. }

  40. }

  41. // 关闭WIFI

  42. public void closeWifi() {

  43. if (mWifiManager.isWifiEnabled()) {

  44. mWifiManager.setWifiEnabled(false);

  45. }

  46. }

  47. // 检查当前WIFI状态

  48. public int checkState() {

  49. return mWifiManager.getWifiState();

  50. }

  51. // 锁定WifiLock

  52. public void acquireWifiLock() {

  53. mWifiLock.acquire();

  54. }

  55. // 解锁WifiLock

  56. public void releaseWifiLock() {

  57. // 判断时候锁定

  58. if (mWifiLock.isHeld()) {

  59. mWifiLock.acquire();

  60. }

  61. }

  62. // 创建一个WifiLock

  63. public void creatWifiLock() {

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

  65. }

  66. // 得到配置好的网络

  67. public List<WifiConfiguration> getConfiguration() {

  68. return mWifiConfiguration;

  69. }

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

  71. public void connectConfiguration(int index) {

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

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

  74. return;

  75. }

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

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

  78. true);

  79. }

  80. public void startScan() {

  81. mWifiManager.startScan();

  82. // 得到扫描结果

  83. mWifiList = mWifiManager.getScanResults();

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

  85. mWifiConfiguration = mWifiManager.getConfiguredNetworks();

  86. }

  87. // 得到网络列表

  88. public List<ScanResult> getWifiList() {

  89. return mWifiList;

  90. }

  91. // 查看扫描结果

  92. public StringBuilder lookUpScan() {

  93. StringBuilder stringBuilder = new StringBuilder();

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

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

  96. + ":");

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

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

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

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

  101. }

  102. return stringBuilder;

  103. }

  104. // 得到MAC地址

  105. public String getMacAddress() {

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

  107. }

  108. // 得到接入点的BSSID

  109. public String getBSSID() {

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

  111. }

  112. // 得到IP地址

  113. public int getIPAddress() {

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

  115. }

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

  117. public String ipIntToString(int ip) {

  118. try {

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

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

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

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

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

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

  125. } catch (Exception e) {

  126. return "";

  127. }

  128. }

  129. // 得到连接的ID

  130. public int getNetworkId() {

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

  132. }

  133. // 得到WifiInfo的所有信息包

  134. public String getWifiInfo() {

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

  136. }

  137. // 添加一个网络并连接

  138. public void addNetwork(WifiConfiguration wcg) {

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

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

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

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

  143. }

  144. // 断开指定ID的网络

  145. public void disconnectWifi(int netId) {

  146. mWifiManager.disableNetwork(netId);

  147. mWifiManager.disconnect();

  148. }

  149. public WifiConfiguration CreateWifiInfo(String SSID, String Password,

  150. int Type) {

  151. WifiConfiguration config = new WifiConfiguration();

  152. config.allowedAuthAlgorithms.clear();

  153. config.allowedGroupCiphers.clear();

  154. config.allowedKeyManagement.clear();

  155. config.allowedPairwiseCiphers.clear();

  156. config.allowedProtocols.clear();

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

  158. WifiConfiguration tempConfig = this.IsExsits(SSID);

  159. if (tempConfig != null) {

  160. mWifiManager.removeNetwork(tempConfig.networkId);

  161. }

  162. if (Type == 1) // WIFICIPHER_NOPASS

  163. {

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

  165. }

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

  167. {

  168. config.hiddenSSID = true;

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

  170. config.allowedAuthAlgorithms

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

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

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

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

  175. config.allowedGroupCiphers

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

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

  178. config.wepTxKeyIndex = 0;

  179. }

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

  181. {

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

  183. config.hiddenSSID = true;

  184. config.allowedAuthAlgorithms

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

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

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

  188. config.allowedPairwiseCiphers

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

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

  191. config.allowedPairwiseCiphers

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

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

  194. }

  195. return config;

  196. }

  197. private WifiConfiguration IsExsits(String SSID) {

  198. List<WifiConfiguration> existingConfigs = mWifiManager

  199. .getConfiguredNetworks();

  200. for (WifiConfiguration existingConfig : existingConfigs) {

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

  202. return existingConfig;

  203. }

  204. }

  205. return null;

  206. }

Android控制WIFI相关操作相关推荐

  1. android 控制wifi模块,Android 控制wifi 相关操作实例

    Android 控制WIFI相关操作 WIFI的全称是Wireless Fidelity,又称802.11b标准,是一种高速的无线通信协议,传输速度可以达到11Mb/s. 实际上,对WIFI并不需要过 ...

  2. android控制wifi状态

    wifi的五种状态 常量名 常量值 网卡状态 WIFI_STATE_DISABLED         1            WIFI网卡不可用 WIFI_STATE_DISABLING       ...

  3. Android开发--Wifi的操作

    Android应用程序测试Wifi非常简单,只需要调用系统的Wifi服务即可对Wifi进行管理,但是由于模拟器中不能使用Wifi的功能,所以测试的操作需要在手机上运行,下面是实例代码: public ...

  4. Android控制wifi开关

    认识下Wifi的几种状态: 1. wifiManager.WIFI_STATE_DISABLED :  (1)  关闭 2. wifiManager..WIFI_STATE_ENABLED :  (3 ...

  5. android控制wifi,Android控制wifi开关

    认识下Wifi的几种状态: 1. wifiManager.WIFI_STATE_DISABLED :  (1)  关闭 2. wifiManager..WIFI_STATE_ENABLED :  (3 ...

  6. gpio控制和相关操作

    一.gpio基础信息 现在总结下GPIO口的八种工作状态,其中四种输入状态,四种输出状态 参考:GPIO口的八种工作状态_沙漠那点绿的博客-CSDN博客_gpio三种状态 输入: 1 上拉输入:默认情 ...

  7. android中关于手机屏幕的相关操作(获取屏幕的宽高等操作)

    这里总结下android中关于手机屏幕的相关操作: 1.获取屏幕的分辨率(因为android中处理显示的时候,需要根据屏幕分辨率的不同才去不同的布局或显示不同的素材) <uses-sdk and ...

  8. android 通过adb命令控制wifi开关

    android 通过adb命令控制wifi开关 2017年08月23日 17:47:46 刘国栋 阅读数:14598 版权声明:本文为博主原创文章,转载请声明文章出处. https://blog.cs ...

  9. Android WiFi 相关

    因公司业务需求 进行WiFi相关的开发,包括WiFi的打开关闭,WiFi监听,自定义弹窗输入密码连接.断开WiFi,保存密码等: 按照以往的方式 ,首先百度 ,cv代码,结果各种报错 : 先介绍下本地 ...

最新文章

  1. 我收到的最佳编程建议
  2. [BZOJ 1070][SCOI2007]修车(费用流)
  3. 学python需要记得的单词_学习Python必背的初级单词有哪些?
  4. boost::iostreams::example::container_device用法的测试程序
  5. GDCM:目录条目的测试程序
  6. Oracle的AWR报告分析
  7. LeetCode每日一题 844. 比较含退格的字符串
  8. IOS中的AFNetworking框架的GET参数的使用
  9. RME二次开发之“修改矩形风管为圆形风管”即实现“天圆地方”连接。
  10. Hadoop_NameNode_代码分析_目录树(2)
  11. linux下怎么查看程序异常,linux程序莫名异常怎么查
  12. 人氏java速成(java基础内容)(一)java的基本类型
  13. python 网格搜索_Python机器学习:6.4 通过网格搜索调参
  14. Linux安装缺少字体包,linux版wps-office安装缺少的字体
  15. html 编辑cad图,cad制图是什么
  16. 怎么能防止网站被注入eval(base64_decode这种类型的木马?
  17. Connect Four四子棋c++程序 - 显示窗口(0)
  18. 基于STM32使用PWM调速控制直流电机
  19. 互联网常用术语指标经验总结
  20. 云虚拟主机+WordPress搭建个人博客详细内容

热门文章

  1. 洛奇 服务器文件,【公告】电信三区服务器合并说明...
  2. 数据结构之栈与递归的实现及应用(斐波拉契数列递归解法和strlen递归解法)
  3. MySQL:给表建立索引及索引的显示
  4. linux下的网桥介绍
  5. apache php 整合 linux,apache集成php5.6方法分享
  6. mysql 高性能架构_高性能MySQL之架构与历史(1)
  7. [BZOJ3566][SHOI2014]概率充电器
  8. 清北学堂 清北-Day1-R1-Count
  9. 利用 Chrome 原生功能截图网页全图
  10. 组合数据类型,英文词频统计