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

huangapple go评论125阅读模式
英文:

How to connect to Wifi network programatically on Android 10 and above?

问题

val ssid = "你的WiFi SSID"
val password = "你的WiFi密码"
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网络的建议吗?

英文:
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()

Used this code but it is not working on Android 10 and above.Also followed https://github.com/ThanosFisherman/WifiUtils but which also not working on Android 10 and above. Can some one suggest how to connect to wifi network.

答案1

得分: 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)
}

请注意,这是一段Kotlin代码,用于连接到Wi-Fi网络并处理连接状态的回调。

英文:

You should try ConnectivityManager and NetworkCallbacks to do this task like this way:

@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)
}

huangapple
  • 本文由 发表于 2023年3月1日 13:28:55
  • 转载请务必保留本文链接:https://go.coder-hub.com/75599895.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定