首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

android wifi连接指定热点出现的有关问题

2013-06-25 
android wifi连接指定热点出现的问题open.openWifi()open.addNetwork(open.CreateWifiInfo(Test, liji

android wifi连接指定热点出现的问题


open.openWifi();

open.addNetwork(open.CreateWifiInfo("Test", "lijiande", 3));
这个是连接方法
 private static WifiManager mWifiManager;
 // 定义WifiInfo对象   
     private WifiInfo mWifiInfo; 
 // 构造器   
     public Open(Context context) {  
         // 取得WifiManager对象   
        mWifiManager = (WifiManager) context  
                .getSystemService(Context.WIFI_SERVICE);  
        // 取得WifiInfo对象   
         mWifiInfo = mWifiManager.getConnectionInfo();  
     } 
  // 打开WIFI   
     public void openWifi() {  
         if (!mWifiManager.isWifiEnabled()) {  
             mWifiManager.setWifiEnabled(true);  
         }  
     } 
public WifiConfiguration CreateWifiInfo(String SSID, String Password, int Type)  
    {  
          WifiConfiguration config = new WifiConfiguration();    
           config.allowedAuthAlgorithms.clear();  
           config.allowedGroupCiphers.clear();  
           config.allowedKeyManagement.clear();  
           config.allowedPairwiseCiphers.clear();  
           config.allowedProtocols.clear();  
          config.SSID = """ + SSID + """;    
           
          WifiConfiguration tempConfig = this.IsExsits(SSID);            
          if(tempConfig != null) {   
              mWifiManager.removeNetwork(tempConfig.networkId);   
          } 
           
          if(Type == 1) //WIFICIPHER_NOPASS 
          {  
               config.wepKeys[0] = "";  
               config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);  
               config.wepTxKeyIndex = 0;  


          }  
          if(Type == 2) //WIFICIPHER_WEP 
          {  
              config.hiddenSSID = true; 
              config.wepKeys[0]= """+Password+""";  
              config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);  
              config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);  
              config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);  
              config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);  
              config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);  
              config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);  
              config.wepTxKeyIndex = 0;  
          }  
          if(Type == 3) //WIFICIPHER_WPA 
          {  
          config.preSharedKey = """+Password+""";  
          config.hiddenSSID = true;    
          config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);    
          config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);                          
          config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);                          
          config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);                     
          //config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);   
          config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); 
          config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); 
          config.status = WifiConfiguration.Status.ENABLED;    
          } 
           return config;  
    }  
     


    private WifiConfiguration IsExsits(String SSID)   
    {   
        List<WifiConfiguration> existingConfigs = mWifiManager.getConfiguredNetworks();   
           for (WifiConfiguration existingConfig : existingConfigs)    
           {   
             if (existingConfig.SSID.equals("""+SSID+"""))   
             {   
                 return existingConfig;   
             }   
           }   
        return null;    
    } 


问题是当我的wifi不打开时程序打开wifi并通过ssid和密码连接时 程序意外出错
当wifi打开时能够连接上这个wifi,希望能够解决这个问题
[解决办法]
open.openWifi();
open.addNetwork(open.CreateWifiInfo("Test", "lijiande", 3));
不能这样写吧,因为openWifi只是打开了wifi,但wifi打开是需要一段时间的,在addNetwork函数应该是在wifi已打开的情况下调用才行
应该注册一个广播用来接收wifi状态改变,在wifi打开后,再调用addNetwork

热点排行