Подключение к скрытой сети Wi-Fi в Android программно? - PullRequest
2 голосов
/ 21 мая 2019

Я создаю приложение для Android, которое должно подключаться к известной доступной скрытой сети Wi-Fi.

Каков правильный подход к этому сценарию?

Я реализовал попытку подключения к скрытой сети Wi-Fi. Я пробовал на устройствах с ОС Android версии 6.0, 7.0, 7.1.1, 8.0, но не смог добиться успеха.

fun initiateWifiConnectivity(mContext: Context, sSID: String, password: String) {
        mWifiManager = mContext.getSystemService(Context.WIFI_SERVICE) as WifiManager

        if (!mWifiManager!!.isWifiEnabled) {
            mWifiManager!!.isWifiEnabled = true
        }

        mWifiConfiguration = WifiConfiguration()
        mWifiConfiguration!!.SSID = convertToQuotedString(sSID)
        mWifiConfiguration!!.preSharedKey = password
        mWifiConfiguration!!.status = WifiConfiguration.Status.ENABLED
        mWifiConfiguration!!.hiddenSSID = true

     mWifiConfiguration!!.allowedAuthAlgorithms.
     set(WifiConfiguration.AuthAlgorithm.LEAP)

     mWifiConfiguration!!.allowedGroupCiphers.
     set(WifiConfiguration.GroupCipher.TKIP)

     mWifiConfiguration!!.allowedGroupCiphers.
     set(WifiConfiguration.GroupCipher.CCMP)

     mWifiConfiguration!!.allowedGroupCiphers.
     set(WifiConfiguration.GroupCipher.WEP40)

     mWifiConfiguration!!.allowedKeyManagement.
     set(WifiConfiguration.KeyMgmt.WPA_PSK)

     mWifiConfiguration!!.allowedKeyManagement.
     set(WifiConfiguration.KeyMgmt.WPA_EAP)

     mWifiConfiguration!!.allowedKeyManagement.
     set(WifiConfiguration.KeyMgmt.IEEE8021X)

     mWifiConfiguration!!.allowedPairwiseCiphers.
     set(WifiConfiguration.PairwiseCipher.TKIP)

     mWifiConfiguration!!.allowedPairwiseCiphers.
     set(WifiConfiguration.PairwiseCipher.CCMP)

     mWifiConfiguration!!.allowedPairwiseCiphers.
     set(WifiConfiguration.PairwiseCipher.NONE)

     mWifiConfiguration!!.allowedProtocols.
     set(WifiConfiguration.Protocol.RSN)

     mWifiConfiguration!!.allowedProtocols.
     set(WifiConfiguration.Protocol.WPA)

        mWifiManager!!.addNetwork(mWifiConfiguration!!)

         Handler().postDelayed(Runnable {
             val list = mWifiManager!!.configuredNetworks
             for (i in list) {
                 if (i.SSID != null && i.SSID == 
convertToQuotedString(sSID)) {

                     mWifiManager!!.disconnect()
                     mWifiManager!!.enableNetwork(i.networkId, true)
                     mWifiManager!!.reconnect()

                     break
                 }
             }
         }, 15000)
}
...