android测试中如何控制wifi

在进行robotium 编写自动化测试用例的时候,有些case 需要控制网络来进行验证,这个时候就需要来回关闭,打开wifi 连接。在网上搜了一下,使用方法比较简单,整理如下:

1、首先需要在app中的 AndroidManifest.xml 文件中申请wifi的访问权限,配置如下:

 

 

Xml代码  
  1.  <!--申请操作wifi的权限 -->  
  2. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>  
  3. <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>  
  4. <uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>   

 2、java wifi控制代码如下:

 

  1. 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();  
        }  
    }  
     

     

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。