Android WiFi连接以编程方式

前端之家收集整理的这篇文章主要介绍了Android WiFi连接以编程方式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
你有什么想法如何建立一个wifi连接与发送密码在我的 Android应用程序?

解决方法

将SSID及其密码传递给以下方法.
public void connectToAP(String ssid,String passkey) {
    Log.i(TAG,"* connectToAP");

    WifiConfiguration wifiConfiguration = new WifiConfiguration();

    String networkSSID = ssid;
    String networkPass = passkey;

    Log.d(TAG,"# password " + networkPass);

    for (ScanResult result : scanResultList) {
        if (result.SSID.equals(networkSSID)) {

            String securityMode = getScanResultSecurity(result);

            if (securityMode.equalsIgnoreCase("OPEN")) {

                wifiConfiguration.SSID = "\"" + networkSSID + "\"";
                wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
                int res = wifiManager.addNetwork(wifiConfiguration);
                Log.d(TAG,"# add Network returned " + res);

                boolean b = wifiManager.enableNetwork(res,true);
                Log.d(TAG,"# enableNetwork returned " + b);

                wifiManager.setWifiEnabled(true);

            } else if (securityMode.equalsIgnoreCase("WEP")) {

                wifiConfiguration.SSID = "\"" + networkSSID + "\"";
                wifiConfiguration.wepKeys[0] = "\"" + networkPass + "\"";
                wifiConfiguration.wepTxKeyIndex = 0;
                wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
                wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
                int res = wifiManager.addNetwork(wifiConfiguration);
                Log.d(TAG,"### 1 ### add Network returned " + res);

                boolean b = wifiManager.enableNetwork(res,"# enableNetwork returned " + b);

                wifiManager.setWifiEnabled(true);
            }

            wifiConfiguration.SSID = "\"" + networkSSID + "\"";
            wifiConfiguration.preSharedKey = "\"" + networkPass + "\"";
            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);

            int res = wifiManager.addNetwork(wifiConfiguration);
            Log.d(TAG,"### 2 ### add Network returned " + res);

            wifiManager.enableNetwork(res,true);

            boolean changeHappen = wifiManager.saveConfiguration();

            if(res != -1 && changeHappen){
                Log.d(TAG,"### Change happen");

                AppStaticVar.connectedSsidName = networkSSID;

            }else{
                Log.d(TAG,"*** Change NOT happen");
            }

            wifiManager.setWifiEnabled(true);
        }
    }
}

public String getScanResultSecurity(ScanResult scanResult) {
    Log.i(TAG,"* 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";
}

不要忘记在清单文件添加必要的权限.

原文链接:https://www.f2er.com/android/312248.html

猜你在找的Android相关文章