tset123 发表于 2015-10-1 00:40:32

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:网卡未知的状态。此程序需要在真机上进行调试才会显示正确的运行结果。这里主要是为了说明程序如何编写。



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>



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 onCreate(Bundle savedInstanceState) {   
[*]20.         super.onCreate(savedInstanceState);   
[*]21.         setContentView(R.layout.main);   
[*]22.         startButton=(Button)findViewById(R.id.startButton);   
[*]23.         stopButton=(Button)findViewById(R.id.stopButton);   
[*]24.         checkButton=(Button)findViewById(R.id.checkButton);   
[*]25.         startButton.setOnClickListener(new startButtonListener());   
[*]26.         stopButton.setOnClickListener(new stopButtonListener());   
[*]27.         checkButton.setOnClickListener(new checkButtonListener());   
[*]28.   }   
[*]29.   class startButtonListener implements OnClickListener   
[*]30.   {   
[*]31.   
[*]32.         /* (non-Javadoc)
[*]33.          * @see android.view.View.OnClickListener#onClick(android.view.View)
[*]34.          */   
[*]35.         @Override   
[*]36.         public void onClick(View v) {   
[*]37.             // TODO Auto-generated method stub   
[*]38.             wifiManager=(WifiManager)Android_Wifi.this.getSystemService(Context.WIFI_SERVICE);   
[*]39.             wifiManager.setWifiEnabled(true);   
[*]40.             System.out.println("wifi state --->"+wifiManager.getWifiState());   
[*]41.             Toast.makeText(Android_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#onClick(android.view.View)
[*]50.          */   
[*]51.         @Override   
[*]52.         public void onClick(View v) {   
[*]53.             // TODO Auto-generated method stub   
[*]54.             wifiManager=(WifiManager)Android_Wifi.this.getSystemService(Context.WIFI_SERVICE);   
[*]55.             wifiManager.setWifiEnabled(false);   
[*]56.             System.out.println("wifi state --->"+wifiManager.getWifiState());   
[*]57.             Toast.makeText(Android_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#onClick(android.view.View)
[*]66.          */   
[*]67.         @Override   
[*]68.         public void onClick(View v) {   
[*]69.             // TODO Auto-generated method stub   
[*]70.             wifiManager=(WifiManager)Android_Wifi.this.getSystemService(Context.WIFI_SERVICE);            
[*]71.             System.out.println("wifi state --->"+wifiManager.getWifiState());   
[*]72.             Toast.makeText(Android_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 onCreate(Bundle savedInstanceState) {
20.         super.onCreate(savedInstanceState);
21.         setContentView(R.layout.main);
22.         startButton=(Button)findViewById(R.id.startButton);
23.         stopButton=(Button)findViewById(R.id.stopButton);
24.         checkButton=(Button)findViewById(R.id.checkButton);
25.         startButton.setOnClickListener(new startButtonListener());
26.         stopButton.setOnClickListener(new stopButtonListener());
27.         checkButton.setOnClickListener(new checkButtonListener());
28.   }
29.   class startButtonListener implements OnClickListener
30.   {
31.   
32.         /* (non-Javadoc)
33.          * @see android.view.View.OnClickListener#onClick(android.view.View)
34.          */
35.         @Override
36.         public void onClick(View v) {
37.             // TODO Auto-generated method stub
38.             wifiManager=(WifiManager)Android_Wifi.this.getSystemService(Context.WIFI_SERVICE);
39.             wifiManager.setWifiEnabled(true);
40.             System.out.println("wifi state --->"+wifiManager.getWifiState());
41.             Toast.makeText(Android_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#onClick(android.view.View)
50.          */
51.         @Override
52.         public void onClick(View v) {
53.             // TODO Auto-generated method stub
54.             wifiManager=(WifiManager)Android_Wifi.this.getSystemService(Context.WIFI_SERVICE);
55.             wifiManager.setWifiEnabled(false);
56.             System.out.println("wifi state --->"+wifiManager.getWifiState());
57.             Toast.makeText(Android_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#onClick(android.view.View)
66.          */
67.         @Override
68.         public void onClick(View v) {
69.             // TODO Auto-generated method stub
70.             wifiManager=(WifiManager)Android_Wifi.this.getSystemService(Context.WIFI_SERVICE);            
71.             System.out.println("wifi state --->"+wifiManager.getWifiState());
72.             Toast.makeText(Android_Wifi.this, "当前网卡状态为:"+wifiManager.getWifiState(), Toast.LENGTH_SHORT).show();
73.         }         
74.   }
75. }



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.iyunv.com/l_serein/article/details/6877598
页: [1]
查看完整版本: android WIFI检测与设置