簡體   English   中英

在 Android 中為雙 SIM 卡設備配置 EAP-SIM

[英]Configure EAP-SIM for dual SIM devices in Android

我嘗試為單個 SIM 設備配置 EAP-SIM 並成功連接。 現在我想在雙 SIM 卡設備上配置特定的 SIM 卡。

我的觀察是在單個 SIM 設備中配置 EAP 時,沒有規定指定 SIM 標識。 那么如何使用特定的 SIM 卡配置 EAP 呢?

為單個 SIM 設備配置 EAP-SIM:

    WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
    WifiEnterpriseConfig enterpriseConfig = new WifiEnterpriseConfig();
    WifiConfiguration wifiConfig = new WifiConfiguration();
    wifiConfig.SSID = "\"" + ssid + "\"";
    wifiConfig.allowedKeyManagement.set(KeyMgmt.WPA_EAP);
    wifiConfig.allowedKeyManagement.set(KeyMgmt.IEEE8021X);
    enterpriseConfig.setEapMethod(WifiEnterpriseConfig.Eap.SIM);
    wifiConfig.enterpriseConfig = enterpriseConfig;
    int nid = wifi.addNetwork(wifiConfig);
    wifi.saveConfiguration();
    wifi.enableNetwork(nid, true);

這個答案對我幫助很大。

如何在 Android 中以編程方式創建和讀​​取 WEP/EAP WiFi 配置?

這是您使用 EAP Sim 配置 Wifi 的方式。

        private fun getWifiConfigurationForAirtelEAP(ssId: String,sim:String):WifiConfiguration{
            val wifiConfiguration = WifiConfiguration()
            wifiConfiguration.SSID = String.format("\"%s\"", ssId);
            wifiConfiguration.hiddenSSID = false
            wifiConfiguration.BSSID = null

            wifiConfiguration.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN)

            wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP)
            wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP)
            wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104)
            wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40)

            wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_EAP)
            wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.IEEE8021X)

            wifiConfiguration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP)
            wifiConfiguration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP)

            wifiConfiguration.allowedProtocols.set(WifiConfiguration.Protocol.RSN)
            wifiConfiguration.allowedProtocols.set(WifiConfiguration.Protocol.WPA)

            wifiConfiguration.enterpriseConfig = getWifiEnterpriseConfig(sim)

            return wifiConfiguration
        }

        private fun getWifiEnterpriseConfig(sim: String): WifiEnterpriseConfig {
            val enterpriseConfig = WifiEnterpriseConfig()
            enterpriseConfig.eapMethod = WifiEnterpriseConfig.Eap.SIM
            enterpriseConfig.anonymousIdentity = "NULL"
            val field = enterpriseConfig.javaClass.getDeclaredField("mFields");
            field.isAccessible =true
            val values = (field.get(enterpriseConfig) as HashMap<String,String>)
            values.put(SIM_NUM,"\""+sim+"\"")
            values.put(CLIENT_CERT,"NULL")
            values.put(KEY_ID,"NULL")
            values.put(ENGINE,"0")
            values.put(ENGINE_ID,"NULL")
            values.put(IDENTITY,"NULL")
            values.put(CA_PATH,"NULL")
            values.put(DOMAIN_SUFFIX_MATCH,"NULL")
            values.put(CA_CERT,"NULL")
            values.put(PASSWORD,"NULL")
            values.put(ANONYMOUS_IDENTITY,"NULL")
            return enterpriseConfig
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM