2011-05-04 107 views

回答

0

刪除/忘記WIFI網絡請嘗試以下兩個鏈接,Android - Cant Remove Wifi Network Programatically- The method removeNetwork(int) in the type WifiManager is not applicable for the arguments (String)How to forget a wireless network in android programmatically?。而對於修改特定的網絡,我認爲你應該先先刪除它,然後要求新密碼,並設置它是這樣的:

if(scanResultSecurity.equals(Constants.WEP)){ 
             wifiConfiguration.SSID = "\"" + networkSSID + "\""; 
             wifiConfiguration.wepKeys[0] = "\"" + password + "\""; 
             wifiConfiguration.wepTxKeyIndex = 0; 
             wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); 
             wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); 
             //Adds to the list of network and returns the network id which can be used to enable it later. 
             networkId = wifiManager.addNetwork(wifiConfiguration); 
             if(networkId != -1){ 
              connectToWifi(wifiConfiguration); 
             } 

            } 
            else if(scanResultSecurity.equals(Constants.PSK)){ 
             wifiConfiguration.SSID = "\"" + networkSSID + "\""; 
             wifiConfiguration.preSharedKey = "\"" + password + "\""; 
             wifiConfiguration.hiddenSSID = true; 
             wifiConfiguration.status = WifiConfiguration.Status.ENABLED; 
             wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); 
             wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); 
             wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); 
             wifiConfiguration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); 
             wifiConfiguration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); 
             wifiConfiguration.allowedProtocols.set(WifiConfiguration.Protocol.RSN); 
             wifiConfiguration.allowedProtocols.set(WifiConfiguration.Protocol.WPA); 
             //Adds to the list of network and returns the network id which can be used to enable it later. 
             networkId = wifiManager.addNetwork(wifiConfiguration); 
             if(networkId != -1){ 
              connectToWifi(wifiConfiguration); 
             } 
            } 

private void connectToWifi(WifiConfiguration wifiConfiguration){ 
     wifiManager.disconnect(); 
     wifiManager.setWifiEnabled(true); 
     boolean enableNetworkBoolean = wifiManager.enableNetwork(wifiConfiguration.networkId, true); 
     Log.i(Constants.LOG_TAG, "networkId "+wifiConfiguration.networkId); 
     Log.i(Constants.LOG_TAG, "SSID "+wifiConfiguration.SSID); 
     Log.i(Constants.LOG_TAG, enableNetworkBoolean+" enableNetworkBoolean"); 
     boolean reconnectBoolean = wifiManager.reconnect(); 
     Log.i(Constants.LOG_TAG, reconnectBoolean+" reconnectBoolean"); 
     boolean changeHappen = wifiManager.saveConfiguration(); 
     Log.i(Constants.LOG_TAG, changeHappen+" changeHappen"); 
     if(enableNetworkBoolean && reconnectBoolean && changeHappen){ 
      Log.i(Constants.LOG_TAG, "Change Happen");  
//   Utility.showToast(MainActivity.this, Constants.CONNECTED); 
      wifiListViewAdapter.notifyDataSetChanged(); 
     } 
     else{ 
      Log.i(Constants.LOG_TAG, "Change not Happen"); 
      Utility.showToast(MainActivity.this, Constants.CONNECTING_ERROR); 
     }     
    }