• WIFI网络访问(一)


    一,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;
        }

  • 相关阅读:
    GO-GRPC实践(二) 增加拦截器,实现自定义context(带request_id)、recover以及请求日志打印
    第六章-堆
    第五章-本地方法接口和本地方法栈
    第四章-虚拟机栈
    第三章-运行时数据区及程序计数器
    04-再谈类的加载器
    03-类的加载过程(类的生命周期)详解
    1.编程入门
    SpringBoot 整合 SpringSecurity 梳理
    pip版本过低无法升级问题
  • 原文地址:https://www.cnblogs.com/lijinlun0825/p/5155369.html
Copyright © 2020-2023  润新知