在进行robotium 编写自动化测试用例的时候,有些case 需要控制网络来进行验证,这个时候就需要来回关闭,打开wifi 连接。在网上搜了一下,使用方法比较简单,整理如下:
1、首先需要在app中的 AndroidManifest.xml 文件中申请wifi的访问权限,配置如下:
Xml代码
- <!--申请操作wifi的权限 -->
- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
- <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
- <uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
2、java wifi控制代码如下:
-
import java.util.List; import android.content.Context; import android.net.wifi.ScanResult; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.net.wifi.WifiManager.WifiLock; public class WifiAdmin{//代码来自网络,原址找不到了…… private WifiManager mWifiManager; //定义WifiManager对象 private WifiInfo mWifiInfo; //定义WifiInfo对象 private List<ScanResult> mWifiList; //扫描出的网络连接列表 private List<WifiConfiguration> mWifiConfiguration; //网络连接列表 WifiLock mWifiLock; //定义一个WifiLock public WifiAdmin(Context context){ mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); //取得WifiManager对象 mWifiInfo = mWifiManager.getConnectionInfo(); //取得WifiInfo对象 } //打开WIFI public void openWifi(){ if (!mWifiManager.isWifiEnabled()){ mWifiManager.setWifiEnabled(true); } } //关闭WIFI public void closeWifi(){ if (mWifiManager.isWifiEnabled()){ mWifiManager.setWifiEnabled(false); } } //锁定WifiLock,当下载大文件时需要锁定 public void acquireWifiLock(){ mWifiLock.acquire(); } public void releaseWifiLock(){//解锁WifiLock //判断时候锁定 if (mWifiLock.isHeld()){ mWifiLock.acquire(); } } public void creatWifiLock(){//创建一个WifiLock mWifiLock = mWifiManager.createWifiLock("Test"); } public List<WifiConfiguration> getConfiguration(){ //得到配置好的网络 return mWifiConfiguration; } public void connectConfiguration(int index){//指定配置好的网络进行连接 //索引大于配置好的网络索引返回 if(index > mWifiConfiguration.size()){ return; } //连接配置好的指定ID的网络 mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId, true); } public void startScan(){ mWifiManager.startScan(); //得到扫描结果 mWifiList = mWifiManager.getScanResults(); mWifiConfiguration = mWifiManager.getConfiguredNetworks();//得到配置好的网络连接 } public List<ScanResult> getWifiList(){//得到网络列表 return mWifiList; } public StringBuilder lookUpScan(){//查看扫描结果 StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < mWifiList.size(); i++){ stringBuilder.append("Index_"+new Integer(i + 1).toString() + ":"); //将ScanResult信息转换成一个字符串包 //其中把包括:BSSID、SSID、capabilities、frequency、level stringBuilder.append((mWifiList.get(i)).toString()); stringBuilder.append("\n"); } return stringBuilder; } //得到MAC地址 public String getMacAddress() { return (mWifiInfo == null) ? "NULL" : mWifiInfo.getMacAddress(); } //得到接入点的BSSID public String getBSSID(){ return (mWifiInfo == null) ? "NULL" : mWifiInfo.getBSSID(); } //得到IP地址 public int getIPAddress(){ return (mWifiInfo == null) ? 0 : mWifiInfo.getIpAddress(); } //得到连接的ID public int getNetworkId(){ return (mWifiInfo == null) ? 0 : mWifiInfo.getNetworkId(); } //得到WifiInfo的所有信息包 public String getWifiInfo(){ return (mWifiInfo == null) ? "NULL" : mWifiInfo.toString(); } //添加一个网络并连接 public void addNetwork(WifiConfiguration wcg){ int wcgID = mWifiManager.addNetwork(wcg); mWifiManager.enableNetwork(wcgID, true); } //断开指定ID的网络 public void disconnectWifi(int netId){ mWifiManager.disableNetwork(netId); mWifiManager.disconnect(); } }
时间: 2024-11-08 23:34:08