本文转载自:http://blog.csdn.net/aaa1050070637/article/details/54136472

直接上代码,简单粗暴,一看就懂

  1. import android.content.Context;
  2. import android.net.ConnectivityManager;
  3. import android.net.NetworkInfo;
  4. import android.net.wifi.ScanResult;
  5. import android.net.wifi.WifiConfiguration;
  6. import android.net.wifi.WifiInfo;
  7. import android.net.wifi.WifiManager;
  8. import android.util.Log;
  9. import java.util.List;
  10. /**
  11. * create 2016.12.29
  12. *
  13. * @author jack大漠
  14. *
  15. */
  16. public class WifiConnect {
  17. private static final String SSID = "Sunlight";
  18. private static final String PASSWORD = "12345678";
  19. public static final String WIFI_IS_NOT_OPEN = "wifi is closed.";
  20. private static final String TAG = "vivi";
  21. public WifiManager mWifiManager = null;
  22. private Context mContext = null;
  23. private int mNetworkID = -1;
  24. public WifiConnect(Context context) {
  25. this.mContext = context;
  26. mWifiManager = (WifiManager) context
  27. .getSystemService(Context.WIFI_SERVICE);
  28. }
  29. /**
  30. * 网络是否连接
  31. */
  32. public boolean isWifiConnected() {
  33. if (mContext != null) {
  34. ConnectivityManager mConnectivityManager = (ConnectivityManager) mContext
  35. .getSystemService(Context.CONNECTIVITY_SERVICE);
  36. NetworkInfo mNetworkInfo = mConnectivityManager
  37. .getActiveNetworkInfo();
  38. if (mNetworkInfo != null
  39. && mNetworkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
  40. return mNetworkInfo.isConnected();
  41. }
  42. }
  43. return false;
  44. }
  45. /**
  46. * Show wifi list
  47. */
  48. public String getWifiList() {
  49. if (WifiManager.WIFI_STATE_ENABLED != mWifiManager.getWifiState()) {
  50. return WIFI_IS_NOT_OPEN;
  51. }
  52. String text = "";
  53. List<ScanResult> results = mWifiManager.getScanResults();
  54. for (ScanResult result : results) {
  55. String SSID = result.SSID;
  56. if (SSID.startsWith("Sun")) {
  57. int db = result.level;
  58. text += SSID + ":" + db;
  59. return text;
  60. }
  61. }
  62. return "";
  63. }
  64. /**
  65. * 打开wifi开关
  66. */
  67. public void openWifi() {
  68. mWifiManager.setWifiEnabled(true);
  69. }
  70. public void closeWifi() {
  71. mWifiManager.setWifiEnabled(false);
  72. }
  73. /**
  74. * 是否打开开关
  75. */
  76. public boolean isWifiOpened() {
  77. return WifiManager.WIFI_STATE_ENABLED == mWifiManager.getWifiState();
  78. }
  79. public boolean isWifiEnable() {
  80. return mWifiManager.isWifiEnabled();
  81. }
  82. /**
  83. * 关闭开关
  84. */
  85. public void shutdownWiFi() {
  86. mWifiManager.setWifiEnabled(false);
  87. mNetworkID = -1;
  88. }
  89. /**
  90. * 连接指定Wifi
  91. */
  92. public boolean connectWifi(final String ssid, final String password,
  93. final SecurityMode mode) {
  94. WifiInfo info = getWifiInfo();
  95. Log.d(TAG, "connectWifi---->" + info.toString() + " ");
  96. if (isWifiConnected() && info != null
  97. && info.getSSID().equals("\"" + ssid + "\"")) {
  98. return true;
  99. }
  100. Log.d(TAG, "connectWifi---->" + isWifiConnected() + " ");
  101. List<WifiConfiguration> existingConfigs = mWifiManager
  102. .getConfiguredNetworks();
  103. if (existingConfigs == null) {
  104. return false;
  105. }
  106. for (WifiConfiguration existingConfig : existingConfigs) {
  107. if (existingConfig.SSID.equals("\"" + ssid + "\"")) {
  108. mNetworkID = existingConfig.networkId;
  109. break;
  110. }
  111. }
  112. if (mNetworkID <= -1) {
  113. WifiConfiguration config = new WifiConfiguration();
  114. config.SSID = "\"" + ssid + "\"";
  115. if (mode == SecurityMode.OPEN) {
  116. config.wepKeys[0] = "";
  117. config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
  118. config.wepTxKeyIndex = 0;
  119. } else if (password != null && !"".equals(password)) {
  120. if (mode == SecurityMode.WEP) {
  121. config.preSharedKey = "\"" + password + "\"";
  122. config.allowedAuthAlgorithms
  123. .set(WifiConfiguration.AuthAlgorithm.SHARED);
  124. config.allowedGroupCiphers
  125. .set(WifiConfiguration.GroupCipher.CCMP);
  126. config.allowedGroupCiphers
  127. .set(WifiConfiguration.GroupCipher.TKIP);
  128. config.allowedGroupCiphers
  129. .set(WifiConfiguration.GroupCipher.WEP40);
  130. config.allowedGroupCiphers
  131. .set(WifiConfiguration.GroupCipher.WEP104);
  132. config.allowedKeyManagement
  133. .set(WifiConfiguration.KeyMgmt.NONE);
  134. config.wepTxKeyIndex = 0;
  135. } else {
  136. config.preSharedKey = "\"" + password + "\"";
  137. config.allowedAuthAlgorithms
  138. .set(WifiConfiguration.AuthAlgorithm.OPEN);
  139. config.allowedGroupCiphers
  140. .set(WifiConfiguration.GroupCipher.TKIP);
  141. config.allowedKeyManagement
  142. .set(WifiConfiguration.KeyMgmt.WPA_PSK);
  143. config.allowedPairwiseCiphers
  144. .set(WifiConfiguration.PairwiseCipher.TKIP);
  145. config.allowedGroupCiphers
  146. .set(WifiConfiguration.GroupCipher.CCMP);
  147. config.allowedPairwiseCiphers
  148. .set(WifiConfiguration.PairwiseCipher.CCMP);
  149. config.status = WifiConfiguration.Status.ENABLED;
  150. }
  151. }
  152. mNetworkID = mWifiManager.addNetwork(config);
  153. }
  154. // 连接该网络
  155. return mWifiManager.enableNetwork(mNetworkID, true);
  156. }
  157. public WifiInfo getWifiInfo() {
  158. WifiInfo info = null;
  159. try {
  160. if (isWifiConnected()) {
  161. info = mWifiManager.getConnectionInfo();
  162. }
  163. } catch (Exception e) {
  164. Log.e(TAG, "getWifiInfo", e);
  165. }
  166. return info;
  167. }
  168. /**
  169. * 网络加密模式
  170. */
  171. public enum SecurityMode {
  172. OPEN, WEP, WPA2
  173. }
  174. /**
  175. * 初始化WiFi连接
  176. */
  177. public boolean initWifiConnect() {
  178. Log.d("vivi", "初始化Wifi连接---->" + " 开始连接");
  179. return connectWifi(SSID, PASSWORD, SecurityMode.WPA2);
  180. }
  181. }

Android连接wifi,调用系统API【转】的更多相关文章

  1. Android上传图片之调用系统拍照和从相冊选择图片

    Android上传图片之调用系统拍照和从相冊选择图片 本篇文章已授权微信公众号 guolin_blog (郭霖)独家公布 前言: 万丈高楼平底起,万事起于微末.不知不觉距离上篇博文已近四个月,2015 ...

  2. Android下载图片/调用系统相机拍照、显示并保存到本地

    package com.example.testhttpget; import java.io.BufferedReader; import java.io.FileNotFoundException ...

  3. 【Android学习】调用系统相机

    Android调用系统相机分三步走: 首先是要设置调用相机的权限. 其次是给按钮加打开相机的事件. 最后是拍照后进行图片的保存. 第一步,添加权限: <!-- 调用系统相机 --> < ...

  4. Android 连接Wifi和创建Wifi热点 demo

    android的热点功能不可见,用了反射的技术搞定之外. Eclipse设置语言为utf-8才能查看中文注释 上代码: MainActivity.java package com.widget.hot ...

  5. android 连接wifi案例

    1.xml布局文件: <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmln ...

  6. 【Android学习】调用系统短信、电话

    今天全心投入Android学习已经有一段时间了,从起初的啥也不懂,到现在半知半解状态,随笔记录些简单且常用的系统功能代码. 调用Android系统短信,其实调用短信非常简单,一个方法就可以搞定.我们可 ...

  7. 调用系统api修改系统时间

    一:截图 二:代码 using System; using System.Collections.Generic; using System.ComponentModel; using System. ...

  8. android 7.0 调用系统相机崩溃的解决方案(非谷歌官方推荐)

    解决方案: 1.(推荐)7.0之后你的app就算有权限,给出一个URI之后手机也认为你没有权限. 不用修改原有代码,在Application的oncreate方法中:(或者直接放在调用相机的activ ...

  9. C# 调用系统API 内核 简单样例

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.R ...

随机推荐

  1. [MVC]Controller

    1,控制器中所有的动作方法必须声明为public,如声明为private或protected,将不被视为动作方法. 如果将Action声明为private,或者是添加[NonAction]属性,则不对 ...

  2. 大数据学习——yarn集群启动

    启动yarn命令: start-yarn.sh 验证是否启动成功 jps查看进程 http://192.168.74.100:8088页面 关闭 stop-yarn.sh

  3. python--如何在线上环境优雅的修改配置文件?

    1.如何在线上环境优雅的修改配置文件? 原配置文件 #原配置文件 global log 127.0.0.1 local2 daemon maxconn 256 log 127.0.0.1 local2 ...

  4. BZOJ2662[BeiJing wc2012]冻结【SPFA】

    “我要成为魔法少女!” “那么,以灵魂为代价,你希望得到什么?” “我要将有关魔法和奇迹的一切,封印于卡片之中„„”        在这个愿望被实现以后的世界里,人们享受着魔法卡片(SpellCard ...

  5. 飞扬的小鸟(codevs 3729)

    题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便 ...

  6. [NOIP1999] 提高组 洛谷P1016 旅行家的预算

    题目描述 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的).给定两个城市之间的距离D1.汽车油箱的容量C(以升为单位).每升汽油能行驶的距离D2.出发点每升汽油价格P和沿 ...

  7. OC-runtime 的温习

    -.runtime简介 runtime简称运行时,OC就是运行时机制,也就是运行时的一些机制,其中最主要的是消息机制: 对于C语言,函数的调用在编辑的时候,会决定调用哪个函数: 对于OC的函数,属于动 ...

  8. SQL SERVER 2012 第五章 创建和修改数据表 の SQL SERVER中的对象名

    [ServerName.[DataBaseName.[SchemeName.]]]ObjectName 服务器名,数据库名,模式名,对象名 其中模式是一个新出的坑爹的东西.

  9. Codeforces 549C The Game Of Parity【博弈】

    C语言纠错大赛的一道题,正好拿来补博弈~~ 给的代码写的略奇葩..不过还是直接在上面改了.. 题目链接: http://codeforces.com/problemset/problem/549/C ...

  10. Java调用WSDL接口

    1.首先准备jar包: 2.代码调用如下: String url="url地址"; QName qName=new QName("命名空间","接口名 ...