【问题标题】:Setup wifi programatically using WPA Security in android tablet在 android 平板电脑中使用 WPA 安全性以编程方式设置 wifi
【发布时间】:2011-12-05 22:24:01
【问题描述】:

我正在尝试在 Android 平板电脑上以编程方式设置 WiFi。如果没有 WiFi 连接,则使用从文本文件读取的 SSID 和密码添加网络。将此网络添加到网络列表并保存密钥。它正在添加网络并保存密码,但是当我尝试连接时,它没有连接。让我知道...

public static void setupWifi(Context _context)
{
     if(deviceConfig.wireless_ssid.length()==0) return;

     WifiManager wifi = (WifiManager)_context.getSystemService(_context.WIFI_SERVICE);
     WifiConfiguration wc = new WifiConfiguration(); 
     wc.SSID = "\"" + deviceConfig.wireless_ssid + "\""; //IMP! This should be in Quotes!!
     wc.hiddenSSID = true;
     wc.status = WifiConfiguration.Status.ENABLED;     
     wc.priority = 40;
     wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
     wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA);

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

     wc.preSharedKey = "\"" + deviceConfig.wireless_passkey + "\"";// 

     Log.d("ssid : ", wc.SSID );

     List<WifiConfiguration> netWorkList =  wifi.getConfiguredNetworks();
     WifiConfiguration wifiCong = null;

     if (netWorkList != null) {
         for(WifiConfiguration item:netWorkList) {
             if (item.SSID.equalsIgnoreCase("\"" + deviceConfig.wireless_ssid + "\"")) {
                 wifiCong = item;
             }
         }
     }

     if (wifiCong == null) {
         boolean res1 = wifi.setWifiEnabled(true);
         int res = wifi.addNetwork(wc);
         Log.d("WifiPreference", "add Network returned " + res );
         boolean b = wifi.enableNetwork(res, true);   
         Log.d("WifiPreference", "enableNetwork returned " + b );  
         boolean es = wifi.saveConfiguration();
         Log.d("WifiPreference", "saveConfiguration returned " + es );
     }
 }

谢谢 基兰

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    我也有这个问题。我解决它的方法是手动将wifi网络添加到设备中。然后我枚举了配置并复制了设备添加的值以成功连接到该网络。

    澄清一下:

    手动添加网络,调用网络管理器以获取配置的网络,找到您的网络,然后从您尝试设置的所有内容中调用 getter - 您将找到您需要的确切配置。

    void getWifiConfigs()
    { 
        WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
        List<WifiConfiguration> networks = wifi.getConfiguredNetworks();
        for (WifiConfiguration current : networks){
            //check getters here
        }
    }
    

    【讨论】:

    • 如果设备上根本没有保存配置怎么办?
    • @tasomaniac 应用程序会因为 nullPointerException 而崩溃,所以在 try catch 块中调用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多