一、什么是WIFI
WIFI就是一种无线联网的技术,以前通过网线连接电脑,而现在则是通过无线电波来联网。常见的就是一个无线路由器,在这个无线路由器的电波覆盖的有效范围都可以采用WIFI连接方式进行联网,如果无线路由器连接了一个ADSL线路或者别的上网线路,则又被称作“热点”。
二、获取WIFI网卡的状态
WIFI网卡的状态是由一系列的整型常量来表示的,通常是在WIFIManager类中。
1.WIFI_STATE_DISABLED:WIFI网卡不可用
2.WIFI_STATE_DISABLING:WIFI正在关闭
3.WIFI_STATE_ENABLED:WIFI网卡可用
4.WIFI_STATE_ENABLING:WIFI网卡正在打开
5.WIFI_STATE_UNKNOWN:未知网卡状态
三、操作WIFI所需要的权限
关于操作权限,可以在帮助文档Manifest.Permission中找到完整的列表。部分常用如下:
四、改变WIFI网卡的状态
对WIFI网卡进行操作需要通过WifiManager对象进行,获取该对象的方法如下:
wifiManager = (WifiManager)WifiActivity.this.getSystemService(Context.WIFI_SERVICE);
打开WIFI网卡:
wifiManager.setWifiEnabled(true);
关闭WIFI网卡:
wifiManager.setWifiEnabled(false);
获取网卡当前的状态:
wifiManager.getWifiState()
例子程序:
WifiActivity.java
package com.android.activity;
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.Toast;
public class WifiActivity extends Activity {
private Button startButton = null;
private Button stopButton = null;
private Button checkButton = null;
private WifiManager wifiManager = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
startButton = (Button)findViewById(R.id.startWifi);
stopButton = (Button)findViewById(R.id.stopWifi);
checkButton = (Button)findViewById(R.id.checkWifi);
startButton.setOnClickListener(new StartWifiListener());
stopButton.setOnClickListener(new StopWifiListener());
checkButton.setOnClickListener(new CheckWifiListener());
}
class StartWifiListener implements OnClickListener{
public void onClick(View v) {
wifiManager = (WifiManager)WifiActivity.this
.getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(true);
System.out.println("wifi state --->"
+ wifiManager.getWifiState());
Toast.makeText(WifiActivity.this, "当前Wifi网卡状态为"
+ wifiManager.getWifiState(),
Toast.LENGTH_SHORT).show();
}
}
class StopWifiListener implements OnClickListener{
public void onClick(View arg0) {
wifiManager = (WifiManager)WifiActivity.this
.getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(false);
System.out.println("wifi state --->"
+ wifiManager.getWifiState());
Toast.makeText(WifiActivity.this, "当前Wifi网卡状态为"
+ wifiManager.getWifiState(),
Toast.LENGTH_SHORT).show();
}
}
class CheckWifiListener implements OnClickListener{
public void onClick(View v) {
wifiManager = (WifiManager)WifiActivity.this
.getSystemService(Context.WIFI_SERVICE);
System.out.println("wifi state --->"
+ wifiManager.getWifiState());
Toast.makeText(WifiActivity.this, "当前Wifi网卡状态为"
+ wifiManager.getWifiState(),
Toast.LENGTH_SHORT).show();
}
}
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.activity" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".WifiActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-sdk android:minSdkVersion="10" /> <!-- 以下是使用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> </manifest>