Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用哈希密码以编程方式连接到wifi_Android - Fatal编程技术网

Android 使用哈希密码以编程方式连接到wifi

Android 使用哈希密码以编程方式连接到wifi,android,Android,我想用给定的SSID和密码连接到WiFi网络。使用非散列密码短语(例如:password=“123456789”)是可以的,但对散列密码的网络(特别是在三星设备上)不起作用。我已经花了几天的时间进行调试,但我找不到任何方法使它在这两种情况下都能正常工作。请帮忙! 这是我的密码: public void connectTo(String SSID, String password){ List<ScanResult> scanResultList = wifiMana

我想用给定的SSID和密码连接到WiFi网络。使用非散列密码短语(例如:password=“123456789”)是可以的,但对散列密码的网络(特别是在三星设备上)不起作用。我已经花了几天的时间进行调试,但我找不到任何方法使它在这两种情况下都能正常工作。请帮忙! 这是我的密码:

 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;
}

您对此有任何更新吗?我也面临着这个问题。你对此有什么更新吗?我也面临这个问题。