2011年5月3日

操作Android中WIFI網路

我們在Android中要對WIFI進行操作時,首先必須獲取WifiManager對象來進行操作,獲取的方法是透過Context中的getSystemService方法取得。
WifiManager wifiManger = (WifiManager)Context.getSystemService(Service.WIFE_SERVICE);

針對網卡操作必須有以下權限
<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網卡在android代碼上的操作有以下幾種:

1.   打開WIFI網卡
wifiManager.setWifiEnabled(true);
2.   關閉WIFI網卡
wifiManager.setWifiEnabled(false);
3.   與當前網路斷開
wifiManager.disconnect();
4.   獲取WIFI網卡狀態,返回狀態為整型
wifiManager.getWifiState();

例子
package com.ahow.wifi;

import android.app.Activity;
import android.content.Context;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class WifiActivity extends Activity {
    
     private Button openWifiBtn;               // 開啟wifi按鈕
     private Button closeWifiBtn;        // 關閉wifi按鈕
     private TextView wifiStateTextView; // 顯示wifi狀態
     private WifiManager wifiManger;          
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        wifiManger =  (WifiManager)getSystemService(Context.WIFI_SERVICE);
       
        // 取得view
        openWifiBtn = (Button)findViewById(R.id.openWifi);
        closeWifiBtn = (Button)findViewById(R.id.closeWifi);
        wifiStateTextView = (TextView)findViewById(R.id.wifiState);
        wifiStateTextView.setText("網卡狀態:" + wifiManger.getWifiState());
       
        // 設置按鈕監聽器
        openWifiBtn.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                     wifiManger.setWifiEnabled(true);
                }
           });
        closeWifiBtn.setOnClickListener(new OnClickListener() {
           @Override
           public void onClick(View v) {
                wifiManger.setWifiEnabled(false);
           }
        });
       
    }
}


附註 :

以下針對幫助文檔中的Service整理 :

沒有留言:

ShareThis