android WIFI检测与设置

WIFI是无线通信协议,可以允许手机直接连接到无线网络。在现在3G资费还比较贵的情况下,WIFI对于手机来说是很重要的,我们可以很方便的下载软件,音乐等资源。Android手机必须要有WIFI网卡才能支持WIFI。Android应用程序有时候需要对WIFI网卡进行操作,从而操作WIFI网络。
      WIFI网卡有一些状态,由一系列的整形常量来表示。

常量名 常量值 网卡状态
WIFI_STATE_DISABLED         1            WIFI网卡不可用
WIFI_STATE_DISABLING               0 WIFI正在关闭
WIFI_STATE_ENABLED 3 WIFI网卡可用
WIFI_STATE_ENABLING 2 WIFI网卡正在打开
WIFI_STATE_UNKNOWN 4 未知网卡状态

在应用程序中操作WIFI网卡一定的权限。
     WIFI 的主要操作权限有四个:
              CHANGE_NETWORK_STATE :允许修改网络状态的权限。
              CHANGE_WIFI_STATE :允许修改 WIFI 状态的权限。
              ACCESS_NETWORK_STATE :允许访问网络状态的权限。
              ACCESS_WIFI_STATE :允许访问 WIFI 状态的权限。
在AndroidManifest.xml文件中添加权限。

    <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网卡进行操作需要通过WifiManager对象来进行,获取该对象的方法如下:
      WifiManager wifiManger=WifiManger)Context.getSystemServiceService.WIFI-SERVICE);
      打开WIFI网卡
      wifiManager.setWifiEnabledtrue);
      关闭WIFI网卡
      wifiManager.setWifiEnabledfalse);
      获取网卡当前的状态
      wifiManager.getWifiState);

示例:新建一个一个Android应用程序,在main.xml中添加三个按钮,点击这三个按钮分别可以打开WIFI网卡,关闭WIFI网卡,检查网卡  的当前状态。需要说明的是由于Android模拟器不支持WIFI和蓝牙所以程序执行时返回的网卡状态都是WIFI_STATE_UNKNOWN:网卡未知的状态。此程序需要在真机上进行调试才会显示正确的运行结果。这里主要是为了说明程序如何编写。

[html] view plaincopyprint? 1. <?xml version=“1.0” encoding=“utf-8”?>    2. <LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”    3.     android:orientation=“vertical”    4.     android:layout_width=“fill_parent”    5.     android:layout_height=“fill_parent”    6.     >    7. <TextView      8.     android:layout_width=“fill_parent”     9.     android:layout_height=“wrap_content”     10.     android:text=“@string/hello”    11.     />    12. <Button    13.     android:id=“@+id/startButton”    14.     android:layout_width=“300dp”    15.     android:layout_height=“wrap_content”    16.     android:text=“打开WIFI网卡”    17.     />    18. <Button    19.     android:id=“@+id/stopButton”    20.     android:layout_width=“300dp”    21.     android:layout_height=“wrap_content”    22.     android:text=“关闭WIFI网卡”    23.     />    24. <Button    25.     android:id=“@+id/checkButton”    26.     android:layout_width=“300dp”    27.     android:layout_height=“wrap_content”    28.     android:text=“检查WIFI网卡状态”    29.     />    30. </LinearLayout>   

   1. <?xml version="1.0" encoding="utf-8"?>  
   2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
   3.     android:orientation="vertical"  
   4.     android:layout_width="fill_parent"  
   5.     android:layout_height="fill_parent"  
   6.     >  
   7. <TextView    
   8.     android:layout_width="fill_parent"   
   9.     android:layout_height="wrap_content"   
  10.     android:text="@string/hello"  
  11.     />  
  12. <Button  
  13.     android:id="@+id/startButton"  
  14.     android:layout_width="300dp"  
  15.     android:layout_height="wrap_content"  
  16.     android:text="打开WIFI网卡"  
  17.     />  
  18. <Button  
  19.     android:id="@+id/stopButton"  
  20.     android:layout_width="300dp"  
  21.     android:layout_height="wrap_content"  
  22.     android:text="关闭WIFI网卡"  
  23.     />  
  24. <Button  
  25.     android:id="@+id/checkButton"  
  26.     android:layout_width="300dp"  
  27.     android:layout_height="wrap_content"  
  28.     android:text="检查WIFI网卡状态"  
  29.     />  
  30. </LinearLayout>  

[java] view plaincopyprint? 1. package idea.org;    2.     3. import android.app.Activity;    4. import android.content.Context;    5. import android.net.wifi.WifiManager;    6. import android.os.Bundle;    7. import android.view.View;    8. import android.view.View.OnClickListener;    9. import android.widget.Button;    10. import android.widget.Toast;    11.     12. public class Android_Wifi extends Activity {    13.     private Button startButton=null;    14.     private Button stopButton=null;    15.     private Button checkButton=null;    16.     WifiManager wifiManager=null;    17.     /** Called when the activity is first created. */    18.     @Override    19.     public void onCreateBundle savedInstanceState) {    20.         super.onCreatesavedInstanceState);    21.         setContentViewR.layout.main);    22.         startButton=Button)findViewByIdR.id.startButton);    23.         stopButton=Button)findViewByIdR.id.stopButton);    24.         checkButton=Button)findViewByIdR.id.checkButton);    25.         startButton.setOnClickListenernew startButtonListener));    26.         stopButton.setOnClickListenernew stopButtonListener));    27.         checkButton.setOnClickListenernew checkButtonListener));    28.     }    29.     class startButtonListener implements OnClickListener    30.     {    31.     32.         /* non-Javadoc) 33.          * @see android.view.View.OnClickListener#onClickandroid.view.View) 34.          */    35.         @Override    36.         public void onClickView v) {    37.             // TODO Auto-generated method stub    38.             wifiManager=WifiManager)Android_Wifi.this.getSystemServiceContext.WIFI_SERVICE);    39.             wifiManager.setWifiEnabledtrue);    40.             System.out.println“wifi state —>”+wifiManager.getWifiState));    41.             Toast.makeTextAndroid_Wifi.this, “当前网卡状态为:”+wifiManager.getWifiState), Toast.LENGTH_SHORT).show);    42.         }    43.             44.     }    45.     class stopButtonListener implements OnClickListener    46.     {    47.     48.         /* non-Javadoc) 49.          * @see android.view.View.OnClickListener#onClickandroid.view.View) 50.          */    51.         @Override    52.         public void onClickView v) {    53.             // TODO Auto-generated method stub    54.             wifiManager=WifiManager)Android_Wifi.this.getSystemServiceContext.WIFI_SERVICE);    55.             wifiManager.setWifiEnabledfalse);    56.             System.out.println“wifi state —>”+wifiManager.getWifiState));    57.             Toast.makeTextAndroid_Wifi.this, “当前网卡状态为:”+wifiManager.getWifiState), Toast.LENGTH_SHORT).show);    58.         }    59.             60.     }    61.     class checkButtonListener implements OnClickListener    62.     {    63.     64.         /* non-Javadoc) 65.          * @see android.view.View.OnClickListener#onClickandroid.view.View) 66.          */    67.         @Override    68.         public void onClickView v) {    69.             // TODO Auto-generated method stub    70.             wifiManager=WifiManager)Android_Wifi.this.getSystemServiceContext.WIFI_SERVICE);              71.             System.out.println“wifi state —>”+wifiManager.getWifiState));    72.             Toast.makeTextAndroid_Wifi.this, “当前网卡状态为:”+wifiManager.getWifiState), Toast.LENGTH_SHORT).show);    73.         }           74.     }    75. }   

   1. package idea.org;  
   2.   
   3. import android.app.Activity;  
   4. import android.content.Context;  
   5. import android.net.wifi.WifiManager;  
   6. import android.os.Bundle;  
   7. import android.view.View;  
   8. import android.view.View.OnClickListener;  
   9. import android.widget.Button;  
  10. import android.widget.Toast;  
  11.   
  12. public class Android_Wifi extends Activity {  
  13.     private Button startButton=null;  
  14.     private Button stopButton=null;  
  15.     private Button checkButton=null;  
  16.     WifiManager wifiManager=null;  
  17.     /** Called when the activity is first created. */  
  18.     @Override  
  19.     public void onCreateBundle savedInstanceState) {  
  20.         super.onCreatesavedInstanceState);  
  21.         setContentViewR.layout.main);  
  22.         startButton=Button)findViewByIdR.id.startButton);  
  23.         stopButton=Button)findViewByIdR.id.stopButton);  
  24.         checkButton=Button)findViewByIdR.id.checkButton);  
  25.         startButton.setOnClickListenernew startButtonListener));  
  26.         stopButton.setOnClickListenernew stopButtonListener));  
  27.         checkButton.setOnClickListenernew checkButtonListener));  
  28.     }  
  29.     class startButtonListener implements OnClickListener  
  30.     {  
  31.   
  32.         /* non-Javadoc) 
  33.          * @see android.view.View.OnClickListener#onClickandroid.view.View) 
  34.          */  
  35.         @Override  
  36.         public void onClickView v) {  
  37.             // TODO Auto-generated method stub  
  38.             wifiManager=WifiManager)Android_Wifi.this.getSystemServiceContext.WIFI_SERVICE);  
  39.             wifiManager.setWifiEnabledtrue);  
  40.             System.out.println"wifi state --->"+wifiManager.getWifiState));  
  41.             Toast.makeTextAndroid_Wifi.this, "当前网卡状态为:"+wifiManager.getWifiState), Toast.LENGTH_SHORT).show);  
  42.         }  
  43.           
  44.     }  
  45.     class stopButtonListener implements OnClickListener  
  46.     {  
  47.   
  48.         /* non-Javadoc) 
  49.          * @see android.view.View.OnClickListener#onClickandroid.view.View) 
  50.          */  
  51.         @Override  
  52.         public void onClickView v) {  
  53.             // TODO Auto-generated method stub  
  54.             wifiManager=WifiManager)Android_Wifi.this.getSystemServiceContext.WIFI_SERVICE);  
  55.             wifiManager.setWifiEnabledfalse);  
  56.             System.out.println"wifi state --->"+wifiManager.getWifiState));  
  57.             Toast.makeTextAndroid_Wifi.this, "当前网卡状态为:"+wifiManager.getWifiState), Toast.LENGTH_SHORT).show);  
  58.         }  
  59.           
  60.     }  
  61.     class checkButtonListener implements OnClickListener  
  62.     {  
  63.   
  64.         /* non-Javadoc) 
  65.          * @see android.view.View.OnClickListener#onClickandroid.view.View) 
  66.          */  
  67.         @Override  
  68.         public void onClickView v) {  
  69.             // TODO Auto-generated method stub  
  70.             wifiManager=WifiManager)Android_Wifi.this.getSystemServiceContext.WIFI_SERVICE);            
  71.             System.out.println"wifi state --->"+wifiManager.getWifiState));  
  72.             Toast.makeTextAndroid_Wifi.this, "当前网卡状态为:"+wifiManager.getWifiState), Toast.LENGTH_SHORT).show);  
  73.         }         
  74.     }  
  75. }  

[html] view plaincopyprint? 1. <?xml version=“1.0” encoding=“utf-8”?>    2. <manifest xmlns:android=“http://schemas.android.com/apk/res/android”    3.       package=“idea.org”    4.       android:versionCode=“1”    5.       android:versionName=“1.0”>    6.     <uses-sdk android:minSdkVersion=“11” />    7.     8.     <application android:icon=“@drawable/icon” android:label=“@string/app_name”>    9.         <activity android:name=“.Android_Wifi”    10.                   android:label=“@string/app_name”>    11.             <intent-filter>    12.                 <action android:name=“android.intent.action.MAIN” />    13.                 <category android:name=“android.intent.category.LAUNCHER” />    14.             </intent-filter>    15.         </activity>    16.     17.     </application>    18.     <uses-permission android:name=“android.permission.CHANGE_NETWORK_STATE”/>    19.     <uses-permission android:name=“android.permission.CHANGE_WIFI_STATE”/>    20.     <uses-permission android:name=“android.permission.ACCESS_NETWORK_STATE”/>    21.     <uses-permission android:name=“android.permission.ACCESS_WIFI_STATE”/>    22. </manifest>   

   1. <?xml version="1.0" encoding="utf-8"?>  
   2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
   3.       package="idea.org"  
   4.       android:versionCode="1"  
   5.       android:versionName="1.0">  
   6.     <uses-sdk android:minSdkVersion="11" />  
   7.   
   8.     <application android:icon="@drawable/icon" android:label="@string/app_name">  
   9.         <activity android:name=".Android_Wifi"  
  10.                   android:label="@string/app_name">  
  11.             <intent-filter>  
  12.                 <action android:name="android.intent.action.MAIN" />  
  13.                 <category android:name="android.intent.category.LAUNCHER" />  
  14.             </intent-filter>  
  15.         </activity>  
  16.   
  17.     </application>  
  18.     <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>  
  19.     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>  
  20.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>  
  21.     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>  
  22. </manifest>  

依次点击“打开WIFI网卡”,“关闭WIFI网卡”,“检查WIFI网卡状态”三个Button按钮,控制台输出一下内容。

转自:http://blog.csdn.net/l_serein/article/details/6877598

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注