2010-11-22 97 views
3

我知道如何以編程方式創建Open/WEP/PSK/PSK2配置。Android:如何以編程方式創建EAP wifi配置?

ex。

WifiConfiguration conf = new WifiConfiguration(); 
conf.SSID = "ssid"; 
conf.preSharedKey = "\"password\""; 
conf.status = WifiConfiguration.Status.ENABLED;   

conf.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); 

conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); 
conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104); 
conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); 
conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); 

conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); 

conf.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); 
conf.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); 

conf.allowedProtocols.set(WifiConfiguration.Protocol.WPA); 
conf.allowedProtocols.set(WifiConfiguration.Protocol.RSN); 

int res = wifi.addNetwork(conf); 
boolean b = wifi.enableNetwork(res, true); 

但是,如何爲'802.1x EAP'創建一個? 展望的源代碼在: .. \包\ APPS \設置\ SRC \ COM \機器人\設置\無線\ WifiDialog.java

case AccessPoint.SECURITY_EAP: 
       config.allowedKeyManagement.set(KeyMgmt.WPA_EAP); 
       config.allowedKeyManagement.set(KeyMgmt.IEEE8021X); 
       config.eap.setValue((String) mEapMethod.getSelectedItem()); 

       config.phase2.setValue((mPhase2.getSelectedItemPosition() == 0) ? "" : 
         "auth=" + mPhase2.getSelectedItem()); 
       config.ca_cert.setValue((mEapCaCert.getSelectedItemPosition() == 0) ? "" : 
         KEYSTORE_SPACE + Credentials.CA_CERTIFICATE + 
         (String) mEapCaCert.getSelectedItem()); 
       config.client_cert.setValue((mEapUserCert.getSelectedItemPosition() == 0) ? "" : 
         KEYSTORE_SPACE + Credentials.USER_CERTIFICATE + 
         (String) mEapUserCert.getSelectedItem()); 
       config.private_key.setValue((mEapUserCert.getSelectedItemPosition() == 0) ? "" : 
         KEYSTORE_SPACE + Credentials.USER_PRIVATE_KEY + 
         (String) mEapUserCert.getSelectedItem()); 
       config.identity.setValue((mEapIdentity.length() == 0) ? "" : 
         mEapIdentity.getText().toString()); 
       config.anonymous_identity.setValue((mEapAnonymous.length() == 0) ? "" : 
         mEapAnonymous.getText().toString()); 
       if (mPassword.length() != 0) { 
        config.password.setValue(mPassword.getText().toString()); 
       } 

似乎做的工作,但 'config.eap' 是不能從我的應用程序訪問。

有沒有辦法配置EAP類型或者不可能?

回答

0

Java Reflection API可用於創建具有證書的IEEE802.x網絡。您可以直接創建IEEE802.x網絡連接是早期版本(如1.6)。在最新的android中,「EnterpriseField」(內部類)不是通過程序直接訪問的。