Android Wifi自动打开并连接
随时随地技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)
转自:http://blog.csdn.net/yangwen123/article/details/9996359
版权声明:本文为博主原创文章,未经博主允许不得转载。
WIFI自动打开并连接到指定的热点:
[java] view plain copy
- do {
- try {
- //连接到指定的wifi热点
- mAdmin.connectWifi(SSID, PWD, WifiCipherType.WIFICIPHER_WPA);
- Thread.sleep(20 * 1000);
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- Log.i(TAG, "connect wifi failed. please open wifi !");
- break;
- }
- } while (!mAdmin.isWifiConnect()); //判断wifi是否连接成功
连接指定wifi热点
[java] view plain copy
- public void connectWifi(String SSID, String Password, WifiCipherType Type) {
- //打开wifi
- if (!this.openWifi()) {
- return;
- }
- //等到wifi状态变成WIFI_STATE_ENABLED的时候才能执行下面的语句
- while (mWifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLING) {
- try {
- // 为了避免程序一直while循环,让它睡个100毫秒在检测……
- Thread.currentThread();
- Thread.sleep(100);
- } catch (InterruptedException ie) {
- }
- }
- //判断是否已配置过当前热点
- WifiConfiguration config = IsConfig(SSID);
- if (config == null) {
- //创建一个当前连接的wifi热点
- config = CreateWifiInfo(SSID, Password, Type);
- }else {
- mWifiManager.removeNetwork(config.networkId);
- }
- WifiManager.Channel mChannel = mWifiManager.initialize(mContext, mContext.getMainLooper(), null);
- mWifiManager.connect(mChannel, config, null);
- }
判断是否已经配置过当前wifi热点
[java] view plain copy
- public WifiConfiguration IsConfig(String SSID) {
- List<WifiConfiguration> existingConfigs = mWifiManager.getConfiguredNetworks();
- if (existingConfigs != null && existingConfigs.size() > 0) {
- for (WifiConfiguration existingConfig : existingConfigs) {
- if (existingConfig.SSID.equals("\"" + SSID + "\"")) {
- return existingConfig;
- }
- }
- }
- return null;
- }
添加一个wifi热点信息配置
[java] view plain copy
- public WifiConfiguration CreateWifiInfo(String SSID, String Password, WifiCipherType Type) {
- WifiConfiguration config = new WifiConfiguration();
- config.allowedAuthAlgorithms.clear();
- config.allowedGroupCiphers.clear();
- config.allowedKeyManagement.clear();
- config.allowedPairwiseCiphers.clear();
- config.allowedProtocols.clear();
- config.SSID = "\"" + SSID + "\"";
- if (Type == WifiCipherType.WIFICIPHER_NOPASS) {
- config.wepKeys[0] = "";
- config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
- config.wepTxKeyIndex = 0;
- }
- if (Type == WifiCipherType.WIFICIPHER_WEP) {
- config.preSharedKey = "\"" + Password + "\"";
- config.hiddenSSID = true;
- config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
- config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
- config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
- config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
- config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
- config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
- config.wepTxKeyIndex = 0;
- }
- if (Type == WifiCipherType.WIFICIPHER_WPA) {
- config.preSharedKey = "\"" + Password + "\"";
- 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.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
- config.status = WifiConfiguration.Status.ENABLED;
- } else {
- return null;
- }
- return config;
- }
打开或关闭wifi连接
[java] view plain copy
- // 打开WIFI
- public boolean openWifi() {
- boolean bRet = true;
- if (!mWifiManager.isWifiEnabled()) {
- bRet = mWifiManager.setWifiEnabled(true);
- }
- return bRet;
- }
- // 关闭WIFI
- public void closeWifi() {
- if (mWifiManager.isWifiEnabled()) {
- mWifiManager.setWifiEnabled(false);
- }
- }
判断wifi是否成功连接
[java] view plain copy
- public boolean isWifiConnect() {
- ConnectivityManager mConnectivityManager = (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
- NetworkInfo mWifi = mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
- return mWifi.isConnected();
- }
Android Wifi自动打开并连接相关推荐
- Wifi可以自动打开并连接指定的网络(Android)
本文主要介绍通过广播消息监听网络状态的变化,Wifi可以自动打开,而后连接指定的Wifi网络.其中包括屏幕灭屏广播.字符串去除双引号的技术点.亲测可用,收藏发布到此,供大家借鉴学习. 1. 工具类:W ...
- QT Android wifi自动重连开发
QT Android wifi自动重连开发 配置安卓wifi操作权限 通过监听QNetworkConfigurationManager信号判断WiFi是否失去连接 Java代码 QT代码 小米平板连接 ...
- Android Wifi --自动连接指定SSID(各种加密方式均可)
Android Wifi API参考网站这里写链接内容 1.开始先加入wifi权限 <uses-permission android:name="android.permission. ...
- Android Wi-Fi 自动连接至需要网页认证AP失败
测试机打开Wi-Fi,连接至Test,关闭Wi-Fi再打开后不能自动重连至Test(其他open AP可以自动重连) 1 测试步骤 测试机打开Wi-Fi,连接至Test(为需要网页认证才能够使用的Wi ...
- ESP8266的Web配网以及强制门户的实现(连接wifi自动打开网页)
目录 前言 Web配网详解 强制门户详解 完整代码 实验效果 前言 1.Web配网概述 在应用到esp8266的场景,往往与wifi是离不开的,但用户的wifi账号密码又无从知晓,于是乎有了配网. 目 ...
- ESP8266Web配网(连接wifi自动打开网页)
前言 1.Web配网概述 在应用到esp8266的场景,往往与wifi是离不开的,但用户的wifi账号密码又无从知晓,于是乎有了配网. 目前,市面上的配网方式多种多样,但其中博主觉得成功率最高,最方便 ...
- 用esp8266实现强制门户(连接WiFi自动打开网页)
1.首先你准备材料 一块Esb8266 NodeMCU CH340开发版(淘宝十几块钱买一个)一块0.96寸OLED 屏幕(4针)4根杜邦线电脑 这个是我用esp8266做的一个小时钟 2.有了材料后 ...
- Android wifi列表扫描 密码连接 多个wifi切换登录 广播状态等都在这里
Wi-Fi 前言 需求 实现 扫描wifi列表 wifi广播 wifi连接登录 总结 前言 app里有个需求就是在应用内部开发一个wifi设置的功能,避免用户跳到手机wifi设置界面操作,之前没开发过 ...
- 电脑上的计算机自动打开,手机连接电脑自动打开word
手机连接电脑弹出Microsoft Office Word 2007 win8系统处理方法:1. 在控制面板->:硬件和声音->:自动播放里,2. iphone手机的设置值是 ...
最新文章
- 你稀里糊涂学的算法复杂度,原来这么简单!
- RDC如何打造支撑百万用户的分布式代码托管平台
- vector的实现原理
- java bufferedinputstream 编码_java中关于编码的问题(字符转换流及字符缓冲流 )
- return两个返回值_LeetCode 第四题 寻找两个有序数组的中位数
- Android HAL 层,三个重要的结构体的源码~
- 【转】4.1触碰jQuery:AJAX异步详解
- 怎么用python进行回归预测_使用Python训练回归模型并进行预测
- python import 类如何捕获clrt c_Python3 与 C# 扩展之~基础衍生
- SQL对某个字段分组并加序号
- matlab abs()le8,《MATLAB_语言与数学运算》练习答案
- Android 如何获取系统签名 并使用系统签名
- 基于java springboot android安卓商城购物平台源码(毕设)
- java手机解锁密码_Appium 解决手势密码 (java篇)
- 从历史故事看企业用人-之二--三国之东吴
- C语言新手记:相反数
- 【参赛作品65】MOGDB/openGauss的txid_snapshot 数据类型和相关函数
- 传销——从数学游戏到经济邪教
- 跨境卖家:如何让海外KOL营销达到理想效果?
- Mac配置docker镜像源