如何在 Android 10 及更高版本上以编程方式连接到 Wifi 网络?

问题描述 投票:0回答:2
val ssid = "Your WiFi SSID"
val password = "Your WiFi password"
val networkSSID = "\"$ssid\""
val networkPassword = "\"$password\""
val wifiConfiguration = WifiConfiguration()
wifiConfiguration.SSID = networkSSID
wifiConfiguration.preSharedKey = networkPassword
val networkId = wifiManager.addNetwork(wifiConfiguration)
wifiManager.disconnect()
wifiManager.enableNetwork(networkId, true)
wifiManager.reconnect()

使用了此代码,但它不适用于 Android 10 及更高版本。还遵循 https://github.com/ThanosFisherman/WifiUtils 但也不适用于 Android 10 及更高版本。有人可以建议如何连接到 wifi 网络吗?

kotlin wifi android-wifi wifimanager
2个回答
3
投票

您应该尝试使用 ConnectivityManager 和 NetworkCallbacks 来完成此任务,如下所示:

@RequiresApi(Build.VERSION_CODES.Q)
fun connectToWiFi(pin: String, ssid:String) {
    val connectivityManager =
         context.getSystemService(Context.CONNECTIVITY_SERVICE) as 
         ConnectivityManager
    val specifier = WifiNetworkSpecifier.Builder()
        .setSsid(ssid)
        .setWpa2Passphrase(pin)
        .setSsidPattern(PatternMatcher(ssid, PatternMatcher.PATTERN_PREFIX))
        .build()
    val request = NetworkRequest.Builder()
        .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
        .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
        .setNetworkSpecifier(specifier)
        .build()
    val networkCallback = object : NetworkCallback() {
        override fun onAvailable(network: Network) {
            super.onAvailable(network)
          showToast(context,context.getString(R.string.connection_success))
        }

        override fun onUnavailable() {
            super.onUnavailable()
            showToast(context,context.getString(R.string.connection_fail))
        }

        override fun onLost(network: Network) {
            super.onLost(network)
            showToast(context,context.getString(R.string.out_of_range))
        }
    }
  connectivityManager.requestNetwork(request, networkCallback)
}

0
投票

我面临同样的问题,连接到指定的网络,但没有互联网连接,其他设备可以获取网络连接

© www.soinside.com 2019 - 2024. All rights reserved.