Android 使用哈希密码以编程方式连接到wifi
我想用给定的SSID和密码连接到WiFi网络。使用非散列密码短语(例如:password=“123456789”)是可以的,但对散列密码的网络(特别是在三星设备上)不起作用。我已经花了几天的时间进行调试,但我找不到任何方法使它在这两种情况下都能正常工作。请帮忙! 这是我的密码:Android 使用哈希密码以编程方式连接到wifi,android,Android,我想用给定的SSID和密码连接到WiFi网络。使用非散列密码短语(例如:password=“123456789”)是可以的,但对散列密码的网络(特别是在三星设备上)不起作用。我已经花了几天的时间进行调试,但我找不到任何方法使它在这两种情况下都能正常工作。请帮忙! 这是我的密码: public void connectTo(String SSID, String password){ List<ScanResult> scanResultList = wifiMana
public void connectTo(String SSID, String password){
List<ScanResult> scanResultList = wifiManager.getScanResults();
//assume the first WiFi always available
String securityMode = getScanResultSecurity(result.firstObject());
WifiConfiguration wifiConfiguration = createAPConfiguration(SSID, password, securityMode);
int res = wifiManager.addNetwork(wifiConfiguration);
wifiManager.enableNetwork(res, true);
wifiManager.setWifiEnabled(true);
wifiManager.saveConfiguration();
}
private WifiConfiguration createAPConfiguration(String networkSSID, String networkPasskey, String securityMode) {
WifiConfiguration wifiConfiguration = new WifiConfiguration();
wifiConfiguration.SSID = "\"" + networkSSID + "\"";
if (securityMode.equalsIgnoreCase("OPEN")) {
wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
} else if (securityMode.equalsIgnoreCase("WEP")) {
wifiConfiguration.wepKeys[0] = "\"" + networkPasskey + "\"";
wifiConfiguration.wepTxKeyIndex = 0;
wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
} else if (securityMode.equalsIgnoreCase("PSK")) {
wifiConfiguration.preSharedKey = "\"" + networkPasskey + "\"";
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_EAP);
wifiConfiguration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
wifiConfiguration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
wifiConfiguration.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
wifiConfiguration.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
} else {
Log.i(TAG, "# Unsupported security mode: " + securityMode);
return null;
}
return wifiConfiguration;
}
public String getScanResultSecurity(ScanResult scanResult) {
Log.i("TEST", "* getScanResultSecurity");
final String cap = scanResult.capabilities;
final String[] securityModes = {"WEP", "PSK", "EAP"};
for (int i = securityModes.length - 1; i >= 0; i--) {
if (cap.contains(securityModes[i])) {
return securityModes[i];
}
}
return "OPEN";
}
public int connectToAP(String networkSSID, String networkPasskey) {
List<ScanResult> scanResultList = wifiManager.getScanResults();
for (ScanResult result : scanResultList) {
if (result.SSID.equals(networkSSID)) {
String securityMode = getScanResultSecurity(result);
WifiConfiguration wifiConfiguration = createAPConfiguration(networkSSID, networkPasskey, securityMode);
int res = wifiManager.addNetwork(wifiConfiguration);
Log.d(TAG, "# addNetwork returned " + res);
boolean b = wifiManager.enableNetwork(res, true);
Log.d(TAG, "# enableNetwork returned " + b);
wifiManager.setWifiEnabled(true);
boolean changeHappen = wifiManager.saveConfiguration();
if (res != -1 && changeHappen) {
Log.d(TAG, "# Change happen");
} else {
Log.d(TAG, "# Change NOT happen");
}
return res;
}
}
return -1;
}
public void connectTo(字符串SSID,字符串密码){
List scanResultList=wifiManager.getScanResults();
//假设第一个WiFi始终可用
String securityMode=getScanResultSecurity(result.firstObject());
WifiConfiguration WifiConfiguration=createAPConfiguration(SSID、密码、securityMode);
int res=wifiManager.addNetwork(wifiConfiguration);
wifiManager.enableNetwork(res,true);
wifiManager.setWifiEnabled(true);
wifiManager.saveConfiguration();
}
private WifiConfiguration CreateAConfiguration(字符串networkSSID、字符串networkPasskey、字符串securityMode){
WifiConfiguration WifiConfiguration=新的WifiConfiguration();
wifiConfiguration.SSID=“\”+网络SSID+“\”;
if(securityMode.equalsIgnoreCase(“打开”)){
wifiConfiguration.allowedKeyManagement.set(wifiConfiguration.KeyMgmt.NONE);
}else if(securityMode.equalsIgnoreCase(“WEP”)){
wifiConfiguration.wepKeys[0]=“\”+网络密钥+“\”;
wifiConfiguration.wepTxKeyIndex=0;
wifiConfiguration.allowedKeyManagement.set(wifiConfiguration.KeyMgmt.NONE);
wifiConfiguration.alloweGroupCiphers.set(wifiConfiguration.GroupCipher.WEP40);
}else if(securityMode.equalsIgnoreCase(“PSK”)){
wifiConfiguration.preSharedKey=“\”+网络密钥+“\”;
wifiConfiguration.hiddenSSID=true;
wifiConfiguration.status=wifiConfiguration.status.ENABLED;
wifiConfiguration.alloweGroupCiphers.set(wifiConfiguration.GroupCipher.TKIP);
wifiConfiguration.alloweGroupCiphers.set(wifiConfiguration.GroupCipher.CCMP);
wifiConfiguration.allowedKeyManagement.set(wifiConfiguration.KeyMgmt.WPA_EAP);
wifiConfiguration.allowedPairwiseCiphers.set(wifiConfiguration.PairwiseCipher.TKIP);
wifiConfiguration.allowedPairwiseCiphers.set(wifiConfiguration.PairwiseCipher.CCMP);
wifiConfiguration.allowedProtocols.set(wifiConfiguration.Protocol.RSN);
wifiConfiguration.allowedProtocols.set(wifiConfiguration.Protocol.WPA);
}否则{
Log.i(标记“#不支持的安全模式“+securityMode”);
返回null;
}
返回线路配置;
}
公共字符串getScanResultSecurity(ScanResult ScanResult){
Log.i(“测试”,“获取扫描结果安全”);
最终字符串上限=scanResult.capabilities;
最后一个字符串[]securityModes={“WEP”、“PSK”、“EAP”};
对于(int i=securityModes.length-1;i>=0;i--){
if(第章包含(证券代码[i])){
返回证券代码[i];
}
}
返回“打开”;
}
public int connectToAP(字符串networkSSID,字符串networkPasskey){
List scanResultList=wifiManager.getScanResults();
用于(扫描结果:扫描结果列表){
if(result.SSID.equals(networkSSID)){
字符串securityMode=getScanResultSecurity(结果);
WifiConfiguration WifiConfiguration=createAPConfiguration(networkSSID、networkPasskey、securityMode);
int res=wifiManager.addNetwork(wifiConfiguration);
Log.d(标记“#addNetwork returned”+res);
布尔b=wifiManager.enableNetwork(res,true);
Log.d(标记“#enableNetwork returned”+b);
wifiManager.setWifiEnabled(true);
boolean changecound=wifiManager.saveConfiguration();
如果(res!=-1&&changecound){
Log.d(标记“#更改发生”);
}否则{
Log.d(标记为“未发生更改”);
}
返回res;
}
}
返回-1;
}
您对此有任何更新吗?我也面临着这个问题。你对此有什么更新吗?我也面临这个问题。