随时随地技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)

转自:http://blog.csdn.net/yangwen123/article/details/9996359

版权声明:本文为博主原创文章,未经博主允许不得转载。

WIFI自动打开并连接到指定的热点:

[java] view plain copy

  1. do {
  2. try {
  3. //连接到指定的wifi热点
  4. mAdmin.connectWifi(SSID, PWD, WifiCipherType.WIFICIPHER_WPA);
  5. Thread.sleep(20 * 1000);
  6. catch (InterruptedException e) {
  7. // TODO Auto-generated catch block
  8. Log.i(TAG, "connect wifi failed. please open wifi !");
  9. break;
  10. }
  11. while (!mAdmin.isWifiConnect()); //判断wifi是否连接成功

连接指定wifi热点

[java] view plain copy

  1. public void connectWifi(String SSID, String Password, WifiCipherType Type) {
  2. //打开wifi
  3. if (!this.openWifi()) {
  4. return;
  5. }
  6. //等到wifi状态变成WIFI_STATE_ENABLED的时候才能执行下面的语句
  7. while (mWifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLING) {
  8. try {
  9. // 为了避免程序一直while循环,让它睡个100毫秒在检测……
  10. Thread.currentThread();
  11. Thread.sleep(100);
  12. catch (InterruptedException ie) {
  13. }
  14. }
  15. //判断是否已配置过当前热点
  16. WifiConfiguration config = IsConfig(SSID);
  17. if (config == null) {
  18. //创建一个当前连接的wifi热点
  19. config = CreateWifiInfo(SSID, Password, Type);
  20. }else {
  21. mWifiManager.removeNetwork(config.networkId);
  22. }
  23. WifiManager.Channel mChannel = mWifiManager.initialize(mContext, mContext.getMainLooper(), null);
  24. mWifiManager.connect(mChannel, config, null);
  25. }

判断是否已经配置过当前wifi热点

[java] view plain copy

  1. public WifiConfiguration IsConfig(String SSID) {
  2. List<WifiConfiguration> existingConfigs = mWifiManager.getConfiguredNetworks();
  3. if (existingConfigs != null && existingConfigs.size() > 0) {
  4. for (WifiConfiguration existingConfig : existingConfigs) {
  5. if (existingConfig.SSID.equals("\"" + SSID + "\"")) {
  6. return existingConfig;
  7. }
  8. }
  9. }
  10. return null;
  11. }

添加一个wifi热点信息配置

[java] view plain copy

  1. public WifiConfiguration CreateWifiInfo(String SSID, String Password, WifiCipherType Type) {
  2. WifiConfiguration config = new WifiConfiguration();
  3. config.allowedAuthAlgorithms.clear();
  4. config.allowedGroupCiphers.clear();
  5. config.allowedKeyManagement.clear();
  6. config.allowedPairwiseCiphers.clear();
  7. config.allowedProtocols.clear();
  8. config.SSID = "\"" + SSID + "\"";
  9. if (Type == WifiCipherType.WIFICIPHER_NOPASS) {
  10. config.wepKeys[0] = "";
  11. config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
  12. config.wepTxKeyIndex = 0;
  13. }
  14. if (Type == WifiCipherType.WIFICIPHER_WEP) {
  15. config.preSharedKey = "\"" + Password + "\"";
  16. config.hiddenSSID = true;
  17. config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
  18. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
  19. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
  20. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
  21. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
  22. config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
  23. config.wepTxKeyIndex = 0;
  24. }
  25. if (Type == WifiCipherType.WIFICIPHER_WPA) {
  26. config.preSharedKey = "\"" + Password + "\"";
  27. config.hiddenSSID = true;
  28. config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
  29. config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
  30. config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
  31. config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
  32. config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
  33. config.status = WifiConfiguration.Status.ENABLED;
  34. else {
  35. return null;
  36. }
  37. return config;
  38. }

打开或关闭wifi连接

[java] view plain copy

  1. // 打开WIFI
  2. public boolean openWifi() {
  3. boolean bRet = true;
  4. if (!mWifiManager.isWifiEnabled()) {
  5. bRet = mWifiManager.setWifiEnabled(true);
  6. }
  7. return bRet;
  8. }
  9. // 关闭WIFI
  10. public void closeWifi() {
  11. if (mWifiManager.isWifiEnabled()) {
  12. mWifiManager.setWifiEnabled(false);
  13. }
  14. }

判断wifi是否成功连接

[java] view plain copy

  1. public boolean isWifiConnect() {
  2. ConnectivityManager mConnectivityManager = (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
  3. NetworkInfo mWifi = mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
  4. return mWifi.isConnected();
  5. }

Android Wifi自动打开并连接相关推荐

  1. Wifi可以自动打开并连接指定的网络(Android)

    本文主要介绍通过广播消息监听网络状态的变化,Wifi可以自动打开,而后连接指定的Wifi网络.其中包括屏幕灭屏广播.字符串去除双引号的技术点.亲测可用,收藏发布到此,供大家借鉴学习. 1. 工具类:W ...

  2. QT Android wifi自动重连开发

    QT Android wifi自动重连开发 配置安卓wifi操作权限 通过监听QNetworkConfigurationManager信号判断WiFi是否失去连接 Java代码 QT代码 小米平板连接 ...

  3. Android Wifi --自动连接指定SSID(各种加密方式均可)

    Android Wifi API参考网站这里写链接内容 1.开始先加入wifi权限 <uses-permission android:name="android.permission. ...

  4. Android Wi-Fi 自动连接至需要网页认证AP失败

    测试机打开Wi-Fi,连接至Test,关闭Wi-Fi再打开后不能自动重连至Test(其他open AP可以自动重连) 1 测试步骤 测试机打开Wi-Fi,连接至Test(为需要网页认证才能够使用的Wi ...

  5. ESP8266的Web配网以及强制门户的实现(连接wifi自动打开网页)

    目录 前言 Web配网详解 强制门户详解 完整代码 实验效果 前言 1.Web配网概述 在应用到esp8266的场景,往往与wifi是离不开的,但用户的wifi账号密码又无从知晓,于是乎有了配网. 目 ...

  6. ESP8266Web配网(连接wifi自动打开网页)

    前言 1.Web配网概述 在应用到esp8266的场景,往往与wifi是离不开的,但用户的wifi账号密码又无从知晓,于是乎有了配网. 目前,市面上的配网方式多种多样,但其中博主觉得成功率最高,最方便 ...

  7. 用esp8266实现强制门户(连接WiFi自动打开网页)

    1.首先你准备材料 一块Esb8266 NodeMCU CH340开发版(淘宝十几块钱买一个)一块0.96寸OLED 屏幕(4针)4根杜邦线电脑 这个是我用esp8266做的一个小时钟 2.有了材料后 ...

  8. Android wifi列表扫描 密码连接 多个wifi切换登录 广播状态等都在这里

    Wi-Fi 前言 需求 实现 扫描wifi列表 wifi广播 wifi连接登录 总结 前言 app里有个需求就是在应用内部开发一个wifi设置的功能,避免用户跳到手机wifi设置界面操作,之前没开发过 ...

  9. 电脑上的计算机自动打开,手机连接电脑自动打开word

    手机连接电脑弹出Microsoft Office Word 2007 win8系统处理方法:1. 在控制面板-&gt:硬件和声音-&gt:自动播放里,2. iphone手机的设置值是 ...

最新文章

  1. 你稀里糊涂学的算法复杂度,原来这么简单!
  2. RDC如何打造支撑百万用户的分布式代码托管平台
  3. vector的实现原理
  4. java bufferedinputstream 编码_java中关于编码的问题(字符转换流及字符缓冲流 )
  5. return两个返回值_LeetCode 第四题 寻找两个有序数组的中位数
  6. Android HAL 层,三个重要的结构体的源码~
  7. 【转】4.1触碰jQuery:AJAX异步详解
  8. 怎么用python进行回归预测_使用Python训练回归模型并进行预测
  9. python import 类如何捕获clrt c_Python3 与 C# 扩展之~基础衍生
  10. SQL对某个字段分组并加序号
  11. matlab abs()le8,《MATLAB_语言与数学运算》练习答案
  12. Android 如何获取系统签名 并使用系统签名
  13. 基于java springboot android安卓商城购物平台源码(毕设)
  14. java手机解锁密码_Appium 解决手势密码 (java篇)
  15. 从历史故事看企业用人-之二--三国之东吴
  16. C语言新手记:相反数
  17. 【参赛作品65】MOGDB/openGauss的txid_snapshot 数据类型和相关函数
  18. 传销——从数学游戏到经济邪教
  19. 跨境卖家:如何让海外KOL营销达到理想效果?
  20. Mac配置docker镜像源

热门文章

  1. 微信小程序业务域名配置
  2. android导航地图,地图导航-Android平台-开发指南-高德地图车机版 | 高德地图API
  3. 编辑出库单issue
  4. OC版本的Moya插件网络架构
  5. 世界上最好语言:PHP技术百问
  6. macOS下长截图的两种方法
  7. Allwinner Camlinux的3g驱动移植
  8. RTP协议封装H264/H265/AAC
  9. 运维监控系列(8)-Prometheus+Grafana监控常用微服务中间件Nacos、Seata、Rocketmq
  10. 如何在SAP 分析云中使用类似Excel的表格 | 易拓科技