在Android中对Wifi操作,android本身提供了一些有用的包,在android.net.wifi包下面。简单介绍一下:

大致可以分为四个主要的类ScanResult,wifiConfiguration,WifiInfo,WifiManager

(1)ScanResult,主要是通过wifi 硬件的扫描来获取一些周边的wifi 热点的信息。

(2)wifiConfiguration 在我们连通一个wifi 接入点的时候,需要获取到的一些信息。大家可以跟我们有线的设备进行对比一下。

(3)WifiInfo 在我们的wifi 已经连通了以后,可以通过这个类获得一些已经连通的wifi 连接的信息获取当前链接的信息,这里信息就比较简单了,这里简单介绍一下这里的方法:

getBSSID() 获取BSSID

getDetailedStateOf() 获取客户端的连通性

getHiddenSSID() 获得SSID 是否被隐藏

getIpAddress() 获取IP 地址

getLinkSpeed() 获得连接的速度

getMacAddress() 获得Mac 地址

getRssi() 获得802.11n 网络的信号

getSSID() 获得SSID

getSupplicanState() 返回具体客户端状态的信息

(4)wifiManager 这个不用说,就是用来管理我们的wifi 连接,这里已经定义好了一些类,可以供我们使用。这里来说相对复杂,里面的内容比较多,但是通过字面意思,我们还是可以获得很多相关的信息。这个类里面预先定义了许多常量,我们可以直接使用,不用再次创建。

介绍完了,开始写一个Demo吧。程序已启动效果图如下:

Android之Wifi学习教程_第1张图片

看代码,其中有注释,我就不多说了。

布局文件代码:


  1. <scrollview xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:id="@+id/mScrollView" android:layout_width="fill_parent"
  3. android:layout_height="wrap_content" android:scrollbars="vertical">
  4. <linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
  5. android:orientation="vertical"
  6. android:layout_width="fill_parent"
  7. android:layout_height="fill_parent"
  8. >
  9. <textview
  10. android:id="@+id/allNetWork"
  11. android:layout_width="fill_parent"
  12. android:layout_height="wrap_content"
  13. android:text="当前没有扫描到Wifi网络"
  14. />
  15. <button
  16. android:id="@+id/scan"
  17. android:layout_width="wrap_content"
  18. android:layout_height="wrap_content"
  19. android:text="扫描网络"
  20. />
  21. <button
  22. android:id="@+id/start"
  23. android:layout_width="wrap_content"
  24. android:layout_height="wrap_content"
  25. android:text="打开Wifi"
  26. />
  27. <button
  28. android:id="@+id/stop"
  29. android:layout_width="wrap_content"
  30. android:layout_height="wrap_content"
  31. android:text="关闭Wifi"
  32. />
  33. <button
  34. android:id="@+id/check"
  35. android:layout_width="wrap_content"
  36. android:layout_height="wrap_content"
  37. android:text="Wifi状态"
  38. />
  39. </button
  40. </button
  41. </button
  42. </button
  43. </textview
复制代码 上面布局文件中的ScrollView用来在Activity中显示右侧滚动条,如果数据多的话,则可以往下滑动继续显示未显示完的数据。主页面代码:
  1. package org.sunchao;

  2. import java.util.List;

  3. import android.app.Activity;
  4. import android.net.wifi.ScanResult;
  5. import android.os.Bundle;
  6. import android.view.View;
  7. import android.view.View.OnClickListener;
  8. import android.widget.Button;
  9. import android.widget.ScrollView;
  10. import android.widget.TextView;
  11. import android.widget.Toast;

  12. public class Main extends Activity implements OnClickListener {
  13. // 右侧滚动条按钮
  14. private ScrollView sView;
  15. private TextView allNetWork;
  16. private Button scan;
  17. private Button start;
  18. private Button stop;
  19. private Button check;
  20. private WifiAdmin mWifiAdmin;
  21. // 扫描结果列表
  22. private List list;
  23. private ScanResult mScanResult;
  24. private StringBuffer mStringBuffer = new StringBuffer();

  25. /** Called when the activity is first created. */
  26. @Override
  27. public void onCreate(Bundle savedInstanceState) {
  28. super.onCreate(savedInstanceState);
  29. setContentView(R.layout.main);
  30. mWifiAdmin = new WifiAdmin(Main.this);
  31. init();
  32. }

  33. // 按钮的初始化
  34. public void init() {
  35. sView = (ScrollView) findViewById(R.id.mScrollView);
  36. allNetWork = (TextView) findViewById(R.id.allNetWork);
  37. scan = (Button) findViewById(R.id.scan);
  38. start = (Button) findViewById(R.id.start);
  39. stop = (Button) findViewById(R.id.stop);
  40. check = (Button) findViewById(R.id.check);
  41. scan.setOnClickListener(Main.this);
  42. start.setOnClickListener(Main.this);
  43. stop.setOnClickListener(Main.this);
  44. check.setOnClickListener(Main.this);
  45. }

  46. // WIFI_STATE_DISABLING 0
  47. // WIFI_STATE_DISABLED 1
  48. // WIFI_STATE_ENABLING 2
  49. // WIFI_STATE_ENABLED 3
  50. public void start() {
  51. mWifiAdmin.openWifi();
  52. Toast.makeText(Main.this, "当前Wifi网卡状态为" + mWifiAdmin.checkState(),
  53. Toast.LENGTH_SHORT).show();
  54. }

  55. public void stop() {
  56. mWifiAdmin.closeWifi();
  57. Toast.makeText(Main.this, "当前Wifi网卡状态为" + mWifiAdmin.checkState(),
  58. Toast.LENGTH_SHORT).show();
  59. }

  60. public void check() {
  61. Toast.makeText(Main.this, "当前Wifi网卡状态为" + mWifiAdmin.checkState(),
  62. Toast.LENGTH_SHORT).show();
  63. }

  64. public void getAllNetWorkList() {
  65. // 每次点击扫描之前清空上一次的扫描结果
  66. if (mStringBuffer != null) {
  67. mStringBuffer = new StringBuffer();
  68. }

  69. // 开始扫描网络
  70. mWifiAdmin.startScan();
  71. list = mWifiAdmin.getWifiList();

  72. if (list != null) {
  73. for (int i = 0; i < list.size(); i++) {
  74. mScanResult = list.get(i);
  75. // 得到网络的SSID:the network name
  76. mStringBuffer = mStringBuffer
  77. .append(mScanResult.SSID).append(" ")
  78. .append(mScanResult.BSSID).append(" ")
  79. .append(mScanResult.capabilities).append(" ")
  80. .append(mScanResult.frequency).append(" ")
  81. .append(mScanResult.level).append(" ")
  82. .append("");
  83. }
  84. allNetWork.setText("扫描到的所有Wifi网络:" + mStringBuffer.toString());
  85. }
  86. }

  87. @Override
  88. public void onClick(View v) {
  89. switch (v.getId()) {
  90. case R.id.scan:
  91. getAllNetWorkList();
  92. break;
  93. case R.id.start:
  94. start();
  95. break;
  96. case R.id.stop:
  97. stop();
  98. break;
  99. case R.id.check:
  100. check();
  101. break;
  102. default:
  103. break;
  104. }
  105. }
  106. }
复制代码 上面用到了一个WifiAdmin类,这是我自己写的一个类,用于对Wifi的操作进行一次封装,里面的方法很多,我们本次Demo只用到了其中几种,但我还是先全部放上去吧,以后会用到的。WifiAdmin工具类代码:
  1. package org.sunchao;

  2. import java.util.List;

  3. import android.content.Context;
  4. import android.net.wifi.ScanResult;
  5. import android.net.wifi.WifiConfiguration;
  6. import android.net.wifi.WifiInfo;
  7. import android.net.wifi.WifiManager;
  8. import android.net.wifi.WifiManager.WifiLock;

  9. public class WifiAdmin {
  10. // 定义WifiManager对象
  11. private WifiManager mWifiManager;
  12. // 定义WifiInfo对象
  13. private WifiInfo mWifiInfo;
  14. // 扫描出的网络连接列表
  15. private List mWifiList;
  16. // 网络连接列表
  17. private List mWifiConfiguration;
  18. // 定义一个WifiLock
  19. WifiLock mWifiLock;

  20. // 构造器
  21. public WifiAdmin(Context context) {
  22. // 取得WifiManager对象
  23. mWifiManager = (WifiManager) context
  24. .getSystemService(Context.WIFI_SERVICE);
  25. // 取得WifiInfo对象
  26. mWifiInfo = mWifiManager.getConnectionInfo();
  27. }

  28. // 打开WIFI
  29. public void openWifi() {
  30. if (!mWifiManager.isWifiEnabled()) {
  31. mWifiManager.setWifiEnabled(true);
  32. }
  33. }

  34. // 关闭WIFI
  35. public void closeWifi() {
  36. if (mWifiManager.isWifiEnabled()) {
  37. mWifiManager.setWifiEnabled(false);
  38. }
  39. }

  40. // 检查当前WIFI状态
  41. public int checkState() {
  42. return mWifiManager.getWifiState();
  43. }

  44. // 锁定WifiLock
  45. public void acquireWifiLock() {
  46. mWifiLock.acquire();
  47. }

  48. // 解锁WifiLock
  49. public void releaseWifiLock() {
  50. // 判断时候锁定
  51. if (mWifiLock.isHeld()) {
  52. mWifiLock.acquire();
  53. }
  54. }

  55. // 创建一个WifiLock
  56. public void creatWifiLock() {
  57. mWifiLock = mWifiManager.createWifiLock("Test");
  58. }

  59. // 得到配置好的网络
  60. public List getConfiguration() {
  61. return mWifiConfiguration;
  62. }

  63. // 指定配置好的网络进行连接
  64. public void connectConfiguration(int index) {
  65. // 索引大于配置好的网络索引返回
  66. if (index > mWifiConfiguration.size()) {
  67. return;
  68. }
  69. // 连接配置好的指定ID的网络
  70. mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId,
  71. true);
  72. }

  73. public void startScan() {
  74. mWifiManager.startScan();
  75. // 得到扫描结果
  76. mWifiList = mWifiManager.getScanResults();
  77. // 得到配置好的网络连接
  78. mWifiConfiguration = mWifiManager.getConfiguredNetworks();
  79. }

  80. // 得到网络列表
  81. public List getWifiList() {
  82. return mWifiList;
  83. }

  84. // 查看扫描结果
  85. public StringBuilder lookUpScan() {
  86. StringBuilder stringBuilder = new StringBuilder();
  87. for (int i = 0; i < mWifiList.size(); i++) {
  88. stringBuilder
  89. .append("Index_" + new Integer(i + 1).toString() + ":");
  90. // 将ScanResult信息转换成一个字符串包
  91. // 其中把包括:BSSID、SSID、capabilities、frequency、level
  92. stringBuilder.append((mWifiList.get(i)).toString());
  93. stringBuilder.append("/n");
  94. }
  95. return stringBuilder;
  96. }

  97. // 得到MAC地址
  98. public String getMacAddress() {
  99. return (mWifiInfo == null) ? "NULL" : mWifiInfo.getMacAddress();
  100. }

  101. // 得到接入点的BSSID
  102. public String getBSSID() {
  103. return (mWifiInfo == null) ? "NULL" : mWifiInfo.getBSSID();
  104. }

  105. // 得到IP地址
  106. public int getIPAddress() {
  107. return (mWifiInfo == null) ? 0 : mWifiInfo.getIpAddress();
  108. }

  109. // 得到连接的ID
  110. public int getNetworkId() {
  111. return (mWifiInfo == null) ? 0 : mWifiInfo.getNetworkId();
  112. }

  113. // 得到WifiInfo的所有信息包
  114. public String getWifiInfo() {
  115. return (mWifiInfo == null) ? "NULL" : mWifiInfo.toString();
  116. }

  117. // 添加一个网络并连接
  118. public void addNetwork(WifiConfiguration wcg) {
  119. int wcgID = mWifiManager.addNetwork(wcg);
  120. mWifiManager.enableNetwork(wcgID, true);
  121. }

  122. // 断开指定ID的网络
  123. public void disconnectWifi(int netId) {
  124. mWifiManager.disableNetwork(netId);
  125. mWifiManager.disconnect();
  126. }
  127. }
复制代码 最后,我们看一下AndroidManifest.xml配置文件的代码,里面有需要用到的权限。这个比较重要,我刚开始就是忘记添加这些权限,程序一启动就挂。后来看LogCat才知道少了这些权限的。
AndroidManifest.xml:
  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  2. package="org.sunchao" android:versionCode="1" android:versionName="1.0">















复制代码 至此这个Demo就完成了,看效果图。 Android之Wifi学习教程_第2张图片Android之Wifi学习教程_第3张图片Android之Wifi学习教程_第4张图片





```````````````````````````````````````````````


本文主要在此基础上,进一步完善程序功能,主要功能有打开无线网卡、关闭无线网卡、检查网卡状态、扫描网络、扫描结果、连接Wifi、断开Wifi、Wifi连接状态。
运行效果图如下:


Android之Wifi学习教程_第5张图片

其中连接Wifi是比较让我头疼的。需要在程序中进行连接,这会有两种情况。第一,Wifi没有密码,可以直接连接;第二,Wifi有密码,在程序中给出密码,然后连接。第一种我查阅相关资料好像确实是可以实现的,第二种我没找到,我自己也不知道该怎么去搞。最后想出一个办法,直接让程序跳到系统设置的Wifi的页面,然后让人手动去设置。观察了一下Android版的QQ,也确实是这么做的。不信你瞧:


Android之Wifi学习教程_第6张图片

点击设置网络后跳转到系统设置页面:


Android之Wifi学习教程_第7张图片

所以此处设置网络我也可以这么做,不过还是有点不爽,可能自己对Wifi这块还不是很熟悉,我会继续查阅相关API文档,到时候再跟大家分享,好了,下面贴一下源代码:
主页面:


  1. package org.sunchao;

  2. import android.app.Activity;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.view.View.OnClickListener;
  7. import android.widget.Button;
  8. import android.widget.ScrollView;
  9. import android.widget.TextView;

  10. public class Main extends Activity implements OnClickListener {
  11. // 右侧滚动条按钮
  12. private ScrollView sView;
  13. private Button openNetCard;
  14. private Button closeNetCard;
  15. private Button checkNetCardState;
  16. private Button scan;
  17. private Button getScanResult;
  18. private Button connect;
  19. private Button disconnect;
  20. private Button checkNetWorkState;
  21. private TextView scanResult;

  22. private String mScanResult;
  23. private WifiAdmin mWifiAdmin;

  24. /** Called when the activity is first created. */
  25. @Override
  26. public void onCreate(Bundle savedInstanceState) {
  27. super.onCreate(savedInstanceState);
  28. setContentView(R.layout.main);
  29. mWifiAdmin = new WifiAdmin(Main.this);
  30. init();
  31. }

  32. /**
  33. * 按钮等控件的初始化
  34. */
  35. public void init() {
  36. sView = (ScrollView) findViewById(R.id.mScrollView);
  37. openNetCard = (Button) findViewById(R.id.openNetCard);
  38. closeNetCard = (Button) findViewById(R.id.closeNetCard);
  39. checkNetCardState = (Button) findViewById(R.id.checkNetCardState);
  40. scan = (Button) findViewById(R.id.scan);
  41. getScanResult = (Button) findViewById(R.id.getScanResult);
  42. scanResult = (TextView) findViewById(R.id.scanResult);
  43. connect = (Button) findViewById(R.id.connect);
  44. disconnect = (Button) findViewById(R.id.disconnect);
  45. checkNetWorkState = (Button) findViewById(R.id.checkNetWorkState);

  46. openNetCard.setOnClickListener(Main.this);
  47. closeNetCard.setOnClickListener(Main.this);
  48. checkNetCardState.setOnClickListener(Main.this);
  49. scan.setOnClickListener(Main.this);
  50. getScanResult.setOnClickListener(Main.this);
  51. connect.setOnClickListener(Main.this);
  52. disconnect.setOnClickListener(Main.this);
  53. checkNetWorkState.setOnClickListener(Main.this);
  54. }

  55. /**
  56. * WIFI_STATE_DISABLING 0 WIFI_STATE_DISABLED 1 WIFI_STATE_ENABLING 2
  57. * WIFI_STATE_ENABLED 3
  58. */
  59. public void openNetCard() {
  60. mWifiAdmin.openNetCard();
  61. }

  62. public void closeNetCard() {
  63. mWifiAdmin.closeNetCard();
  64. }

  65. public void checkNetCardState() {
  66. mWifiAdmin.checkNetCardState();
  67. }

  68. public void scan() {
  69. mWifiAdmin.scan();
  70. }

  71. public void getScanResult() {
  72. mScanResult = mWifiAdmin.getScanResult();
  73. scanResult.setText(mScanResult);
  74. }

  75. public void connect() {
  76. mWifiAdmin.connect();
  77. // startActivityForResult(new Intent(
  78. // android.provider.Settings.ACTION_WIFI_SETTINGS), 0);
  79. startActivity(new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS));
  80. }

  81. public void disconnect() {
  82. mWifiAdmin.disconnectWifi();
  83. }

  84. public void checkNetWorkState() {
  85. mWifiAdmin.checkNetWorkState();
  86. }

  87. @Override
  88. public void onClick(View v) {
  89. switch (v.getId()) {
  90. case R.id.openNetCard:
  91. openNetCard();
  92. break;
  93. case R.id.closeNetCard:
  94. closeNetCard();
  95. break;
  96. case R.id.checkNetCardState:
  97. checkNetCardState();
  98. break;
  99. case R.id.scan:
  100. scan();
  101. break;
  102. case R.id.getScanResult:
  103. getScanResult();
  104. break;
  105. case R.id.connect:
  106. connect();
  107. break;
  108. case R.id.disconnect:
  109. disconnect();
  110. break;
  111. case R.id.checkNetWorkState:
  112. checkNetWorkState();
  113. break;
  114. default:
  115. break;
  116. }
  117. }
  118. }
复制代码

Wifi工具类:
  1. package org.sunchao;

  2. import java.util.List;

  3. import android.content.Context;
  4. import android.net.wifi.ScanResult;
  5. import android.net.wifi.WifiConfiguration;
  6. import android.net.wifi.WifiInfo;
  7. import android.net.wifi.WifiManager;
  8. import android.net.wifi.WifiManager.WifiLock;
  9. import android.util.Log;

  10. public class WifiAdmin {
  11. private final static String TAG = "WifiAdmin";
  12. private StringBuffer mStringBuffer = new StringBuffer();
  13. private List listResult;
  14. private ScanResult mScanResult;
  15. // 定义WifiManager对象
  16. private WifiManager mWifiManager;
  17. // 定义WifiInfo对象
  18. private WifiInfo mWifiInfo;
  19. // 网络连接列表
  20. private List mWifiConfiguration;
  21. // 定义一个WifiLock
  22. WifiLock mWifiLock;

  23. /**
  24. * 构造方法
  25. */
  26. public WifiAdmin(Context context) {
  27. mWifiManager = (WifiManager) context
  28. .getSystemService(Context.WIFI_SERVICE);
  29. mWifiInfo = mWifiManager.getConnectionInfo();
  30. }

  31. /**
  32. * 打开Wifi网卡
  33. */
  34. public void openNetCard() {
  35. if (!mWifiManager.isWifiEnabled()) {
  36. mWifiManager.setWifiEnabled(true);
  37. }
  38. }

  39. /**
  40. * 关闭Wifi网卡
  41. */
  42. public void closeNetCard() {
  43. if (mWifiManager.isWifiEnabled()) {
  44. mWifiManager.setWifiEnabled(false);
  45. }
  46. }

  47. /**
  48. * 检查当前Wifi网卡状态
  49. */
  50. public void checkNetCardState() {
  51. if (mWifiManager.getWifiState() == 0) {
  52. Log.i(TAG, "网卡正在关闭");
  53. } else if (mWifiManager.getWifiState() == 1) {
  54. Log.i(TAG, "网卡已经关闭");
  55. } else if (mWifiManager.getWifiState() == 2) {
  56. Log.i(TAG, "网卡正在打开");
  57. } else if (mWifiManager.getWifiState() == 3) {
  58. Log.i(TAG, "网卡已经打开");
  59. } else {
  60. Log.i(TAG, "---_---晕......没有获取到状态---_---");
  61. }
  62. }

  63. /**
  64. * 扫描周边网络
  65. */
  66. public void scan() {
  67. mWifiManager.startScan();
  68. listResult = mWifiManager.getScanResults();
  69. if (listResult != null) {
  70. Log.i(TAG, "当前区域存在无线网络,请查看扫描结果");
  71. } else {
  72. Log.i(TAG, "当前区域没有无线网络");
  73. }
  74. }

  75. /**
  76. * 得到扫描结果
  77. */
  78. public String getScanResult() {
  79. // 每次点击扫描之前清空上一次的扫描结果
  80. if (mStringBuffer != null) {
  81. mStringBuffer = new StringBuffer();
  82. }
  83. // 开始扫描网络
  84. scan();
  85. listResult = mWifiManager.getScanResults();
  86. if (listResult != null) {
  87. for (int i = 0; i < listResult.size(); i++) {
  88. mScanResult = listResult.get(i);
  89. mStringBuffer = mStringBuffer.append("NO.").append(i + 1)
  90. .append(" :").append(mScanResult.SSID).append("->")
  91. .append(mScanResult.BSSID).append("->")
  92. .append(mScanResult.capabilities).append("->")
  93. .append(mScanResult.frequency).append("->")
  94. .append(mScanResult.level).append("->")
  95. .append(mScanResult.describeContents()).append("");
  96. }
  97. }
  98. Log.i(TAG, mStringBuffer.toString());
  99. return mStringBuffer.toString();
  100. }

  101. /**
  102. * 连接指定网络
  103. */
  104. public void connect() {
  105. mWifiInfo = mWifiManager.getConnectionInfo();

  106. }

  107. /**
  108. * 断开当前连接的网络
  109. */
  110. public void disconnectWifi() {
  111. int netId = getNetworkId();
  112. mWifiManager.disableNetwork(netId);
  113. mWifiManager.disconnect();
  114. mWifiInfo = null;
  115. }

  116. /**
  117. * 检查当前网络状态
  118. *
  119. * @return String
  120. */
  121. public void checkNetWorkState() {
  122. if (mWifiInfo != null) {
  123. Log.i(TAG, "网络正常工作");
  124. } else {
  125. Log.i(TAG, "网络已断开");
  126. }
  127. }

  128. /**
  129. * 得到连接的ID
  130. */
  131. public int getNetworkId() {
  132. return (mWifiInfo == null) ? 0 : mWifiInfo.getNetworkId();
  133. }

  134. /**
  135. * 得到IP地址
  136. */
  137. public int getIPAddress() {
  138. return (mWifiInfo == null) ? 0 : mWifiInfo.getIpAddress();
  139. }

  140. // 锁定WifiLock
  141. public void acquireWifiLock() {
  142. mWifiLock.acquire();
  143. }

  144. // 解锁WifiLock
  145. public void releaseWifiLock() {
  146. // 判断时候锁定
  147. if (mWifiLock.isHeld()) {
  148. mWifiLock.acquire();
  149. }
  150. }

  151. // 创建一个WifiLock
  152. public void creatWifiLock() {
  153. mWifiLock = mWifiManager.createWifiLock("Test");
  154. }

  155. // 得到配置好的网络
  156. public List getConfiguration() {
  157. return mWifiConfiguration;
  158. }

  159. // 指定配置好的网络进行连接
  160. public void connectConfiguration(int index) {
  161. // 索引大于配置好的网络索引返回
  162. if (index >= mWifiConfiguration.size()) {
  163. return;
  164. }
  165. // 连接配置好的指定ID的网络
  166. mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId,
  167. true);
  168. }

  169. // 得到MAC地址
  170. public String getMacAddress() {
  171. return (mWifiInfo == null) ? "NULL" : mWifiInfo.getMacAddress();
  172. }

  173. // 得到接入点的BSSID
  174. public String getBSSID() {
  175. return (mWifiInfo == null) ? "NULL" : mWifiInfo.getBSSID();
  176. }

  177. // 得到WifiInfo的所有信息包
  178. public String getWifiInfo() {
  179. return (mWifiInfo == null) ? "NULL" : mWifiInfo.toString();
  180. }

  181. // 添加一个网络并连接
  182. public int addNetwork(WifiConfiguration wcg) {
  183. int wcgID = mWifiManager.addNetwork(mWifiConfiguration.get(3));
  184. mWifiManager.enableNetwork(wcgID, true);
  185. return wcgID;
  186. }
  187. }
复制代码 AndroidManifest.xml:(注意需要添加的权限)
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="org.sunchao" android:versionCode="1" android:versionName="1.0">
  4. <uses-sdk android:minSdkVersion="8" />

  5. <application android:icon="@drawable/icon" android:label="@string/app_name">
  6. <activity android:name=".Main" android:label="@string/app_name">
  7. <intent-filter>
  8. <action android:name="android.intent.action.MAIN" />
  9. <category android:name="android.intent.category.LAUNCHER" />
  10. </intent-filter>
  11. </activity>

  12. </application>
  13. <!-- 以下是使用wifi访问网络所需的权限 -->
  14. <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"></uses-permission>
  15. <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
  16. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
  17. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
  18. </manifest>
复制代码

布局文件就不贴了,我想看界面你都可以自己写出来,如果有需要,这里可以下载源代码:


转自:http://www.apkbus.com/android-23881-1-1.html

更多相关文章

  1. Android 与 后台网络交互踩坑
  2. android 使用代码方式创建自定义progressBar——自定义控件学习(
  3. Android dumpsys 使用之分析网络使用情况
  4. Android http请求例子、Unicode转UTF-8 java代码收藏

随机推荐

  1. android socket客户端app
  2. Android——ScrollView
  3. android > styles
  4. android控件相对布局
  5. google map my demo
  6. 判断Android设备是否连接网络
  7. Android中简单的音乐播放器
  8. Android文件递归遍历
  9. android 不使用布局文件,完全由代码控制布
  10. Android 分享微信小程序