WIFI網路訪問(一)

來源:互聯網
上載者:User

標籤:

一,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網路訪問(一)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.