一,WIFI 网卡有哪些状态?

WIFI 总共有以下五个状态,实际就是一些整形常量:

1.   WIFI_STATE_DISABLED : WIFI 不能使用,其值是: 1 

2.   WIFI_STATE_DISABLING : WIFI 正在关闭中,由于 WIFI 关闭是需要这一个过程,这个状态就表示 WIFI 正在关闭的过程中,其值是: 0 

3.   WIFI_STATE_ENABLED : WIFI 可以使用,其值是: 3 

4.   WIFI_STATE_ENABLING : WIFI 正在开启中,其道理同 WIFI_STATE_DISABLING ,其值是: 2 

5.   WIFI_STATE_UNKNOWN :未知网卡状态,当手机或程序出现了一些错误引起 WIFI 不可用时会是这个状态,其值是: 4 

二,操作 WIFI 需要获取的权限

要获取操作 WIFI 的权限,就必须知道 WIFI 到底有哪些权限, WIFI 的主要操作权限有四个:

CHANGE_NETWORK_STATE :允许修改网络状态的权限。

CHANGE_WIFI_STATE :允许修改 WIFI 状态的权限。

ACCESS_NETWORK_STATE :允许访问网络状态的权限。

ACCESS_WIFI_STATE :允许访问 WIFI 状态的权限。

 

声明操作 WIFI 权限是在 AndroidManifest.xml 文件中进行声明!加入:

  •     <!--得到WIFI访问网络所需要的权限 -->  
  • <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"></uses-permission>
  • <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
  • <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
  • <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>

三、 改变 WIFI 的状态

对 WIFI 状态进行操作主要涉及到三个方面:

1.  通过   m_wifiManager=(WifiManager)this.getSystemService(Context.WIFI_SERVICE); 得到WifiManager 对象,这个对象是我们操作 WIFI 网卡的根本,无论是改变WIFI 的状态,还是获取 WIFI 的状态,都要通过这个对象。

2.  改变 WIFI 网卡状态,涉及到一个 WifiManager 的方法SetWifiEnabled ,通过这个方法的参数设置,可以实现打开或关闭 WIFI :true 表示打开, false 表示关闭。

3.   获取 WIFI 网卡的状态,涉及到一个 WifiManager 的方法 getWifiState 通过这个方法,就可以取得 WIFI 的当前状态,即第一点中所讲的 WIFI 五个状态中的一个。

注:

1、 有些地方使用m_wifiManager =(WifiManager)this.getSystemService(Service.WIFI_SERVICE ) ;或者(WifiManager)this.getSystemService(this. WIFI_SERVICE )来取得 WifiManager 对象,由于 Service 和Activity都是是 Context 的一个子类, Service和Activity 的 WIFI_SERVICE 实际是从 Context 那里继承下来的,所以写成 Context.WIFI_SERVICE 也是没有问题的。

附:也可以通过下面的方法来获取wifi状态

// 获取wifi是否打开
    public boolean isWifiActive()
    {
        // 获取连接管理器
        ConnectivityManager connMng = (ConnectivityManager) this
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connMng != null)
        {
            NetworkInfo[] netInfor = connMng.getAllNetworkInfo();
            for (NetworkInfo i : netInfor)
            {
                if (ConnectivityManager.TYPE_WIFI == i.getType()
                        && i.isConnected())
                {
                    return true;// wifi已经打开
                }
            }
        }
        return false;
    }

WIFI网络访问(一)的更多相关文章

  1. 【智能家居篇】wifi网络访问原理(下一个)——联想Association

    转载请注明出处:http://blog.csdn.net/Righthek 谢谢! 认证完毕后,下一步就是关联(Association). 工作站与基站进行关联.以便获得网络的全然訪问权. 关联属于一 ...

  2. 360开启wifi无网络访问处理办法

    一.背景说明 台式机默认没有无线网卡的,想开个wifi,在电脑上插上了个usb无线网卡然后开启“360免费WiFi”.但显示“无网络访问”,连上之后确实也不能访问外部网站. 二.处理办法 依次打开“控 ...

  3. Android (cocos2dx 网络访问)访问权限设置

    Android开发应用程序时,如果应用程序需要访问网络权限,需要在 AndroidManifest.xml 中加入以下代码: 同样的如果用到其它的权限,也需要作出声明,部分权限列表如下: androi ...

  4. android 中获取网络状态、判断3G、2G、wifi网络、判断wifi是否打开、获取本机地址、获取本机串号IMEI整理

    代码如下:package com.android.xym; import java.io.IOException; import java.net.HttpURLConnection; import ...

  5. 如何使用Reaver破解Wi-Fi网络的WPA密码

    via: http://lifehacker.com/5873407/how-to-crack-a-wi+fi-networks-wpa-password-with-reaver 译者:Mr小眼儿 本 ...

  6. 在Wifi网络中嗅探明文密码(HTTP POST请求、POP等)

    全世界,现在大约50%的网站没有使用SSL加密,天朝尤其多. 我们都知道通过HTTP发送的数据都是明文,没有使用任何加密,即使是在数据敏感的登录页面. 本文的目的是:如果你在不熟悉的网络环境中,要注意 ...

  7. 【技术贴】大型发布会现场的WiFi网络应该如何搭建?

    WiFi网络的部署要远远比一般人想象的复杂,不是说放上几十个AP带宽就自动增加几十倍,恰恰相反,简单放几十个AP带宽会由于AP之间的竞争而 迅速使带宽下降为几乎不可用.实际上这个问题完全可以写一本书了 ...

  8. 主机WIFI网络环境下,Linux虚拟机网络设置

    在主机使用WIFI网络环境下,怎么样进行虚拟机静态ip设置和连接互联网呢,原理什么太麻烦,另类的网络共享而已: 1.其实简单将网络连接模式设置成NAT模式即可. 2.虚拟网络编辑器依旧是桥接模式,选择 ...

  9. 九、Android学习第八天——广播机制与WIFI网络操作(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 九.Android学习第八天——广播机制与WIFI网络操作 今天熟悉了An ...

随机推荐

  1. docker 数据管理

    一,介于创建docker容器退出或者删除容器数据无法得以保存以及docker容器中的分区较小的问题存在,未解决该问题,可以使用参考以下几种方法. 1,将宿主的目录挂载到容器中去. docker run ...

  2. PHP session 跨子域问题总结

    Session主要分两部分: 一个是Session数据,该数据默认情况下是存放在服务器的tmp文件下的,是以文件形式存在 另一个是标志着Session数据的Session Id,Session ID, ...

  3. JS滚轮事件(mousewheel/DOMMouseScroll)了解

    已经没有了小学生时代过目不忘的记忆力了,很多自己折腾的东西.接触的东西,短短1年之后就全然不记得了.比方说,完全记不得获取元素与页面距离的方法(getBoundingClientRect),或者是不记 ...

  4. asp.net 内部重定向

    1. /* * 2. * Context.RewritePath() * 使用给定路径重写 URL.(内部重写) * 内部请求重写 */ public static void TestTwo() { ...

  5. 一个项目涉及到的50个Sql语句(整理版)

    /* 标题:一个项目涉及到的50个Sql语句(整理版) 说明:以下五十个语句都按照测试数据进行过测试,最好每次只单独运行一个语句. */ --1.学生表Student(S,Sname,Sage,Sse ...

  6. emjio表情转json

    今天碰到了上传文字给服务端的时候emjio表情转成json就不对了 有大神帮忙解决了,记笔记记笔记--- #import "NSString+EncodedString.h" @i ...

  7. wince下写入数据到csv/txt文件中

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  8. 迁移google code上的项目到本地版本库

    今年五月份以来就已经连接不上google code了,翻*墙又极度不稳定,在忍受了几个月之后终于决定将项目搬离google code;经过研究之后终于实现了搬迁到本地,最后总结成下文.一者期望对有需要 ...

  9. for循环执行顺序

    for循环的执行顺序用如下表达式: for(expression1;expression2;expression3) { expression4; } 执行的顺序应该是: 1)第一次循环,即初始化循环 ...

  10. oracle之Flash Recovery Area全面介绍 (转载)

    1. 设置闪回恢复区闪回恢复区主要通过3个初始化参数来设置和管理 db_recovery_file_dest:指定闪回恢复区的位置db_recovery_file_dest_size:指定闪回恢复区的 ...