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]