android WIFI检测与设置

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

常量名常量值网卡状态
WIFI_STATE_DISABLED         1            WIFI网卡不可用
WIFI_STATE_DISABLING               0WIFI正在关闭
WIFI_STATE_ENABLED3WIFI网卡可用
WIFI_STATE_ENABLING2WIFI网卡正在打开
WIFI_STATE_UNKNOWN4未知网卡状态

在应用程序中操作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.getSystemService(Service.WIFI-SERVICE); 
      打开WIFI网卡 
      wifiManager.setWifiEnabled(true); 
      关闭WIFI网卡 
      wifiManager.setWifiEnabled(false); 
      获取网卡当前的状态 
      wifiManager.getWifiState();

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

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

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

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

依次点击“打开WIFI网卡”,“关闭WIFI网卡”,“检查WIFI网卡状态”三个Button按钮,控制台输出一下内容。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值