欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > Android 11以上App主动连接WIFI的完整方案

Android 11以上App主动连接WIFI的完整方案

2025/6/6 9:06:20 来源:https://blog.csdn.net/qq_36428821/article/details/148409380  浏览:    关键词:Android 11以上App主动连接WIFI的完整方案

早期Android版本App内连接指定的WIFI还是比较简单的,但是随着Android版本的提升,限制也越来越多。以下是一套完整的Android 11以上的WIFI应用内主动连接方案。

第一步:添加到建议连接:

val wifiManager = getSystemService(WIFI_SERVICE) as WifiManager//一定要加,不然切换指定WIFI无效
wifiManager.removeNetworkSuggestions(wifiManager.networkSuggestions)
val suggestion = WifiNetworkSuggestion.Builder().setSsid(ssid).setWpa2Passphrase((pwd)).setIsAppInteractionRequired(false).build()
val suggestionsList = ArrayList<WifiNetworkSuggestion>()
suggestionsList.add(suggestion)
val status: Int = wifiManager.addNetworkSuggestions(suggestionsList)
if (status == WifiManager.STATUS_NETWORK_SUGGESTIONS_SUCCESS) {}

但是这里有一个问题:这个是建议,不一定能连上。这就很让人难受!

第二步:监听网络状态:

private val networkCallback = object : ConnectivityManager.NetworkCallback() {override fun onAvailable(network: Network) {super.onAvailable(network)Log.d(TAG, "用户已连接到网络")val capabilities = mConnectivityManager!!.getNetworkCapabilities(network)Log.d(TAG, "$capabilities")if (capabilities?.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) == true) {// 获取当前连接的WiFi信息val wifiInfo = wifiManager!!.connectionInfoLog.d(TAG, "wifi info = $wifiInfo")if (wifiInfo.ssid == String.format("\"%s\"", TEST_WIFI_SSID))) {Log.d(TAG, "用户已连接到建议的网络")Prefs.isWifiConnected = truePrefs.currentWifiSsid = wifiInfo.ssid}}}override fun onUnavailable() {super.onUnavailable()Log.d(TAG, "用户未连接到建议的网络")clearWifiState()}}mConnectivityManager = getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager// 注册回调
val request = NetworkRequest.Builder().addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET).addTransportType(NetworkCapabilities.TRANSPORT_WIFI).build()
mConnectivityManager?.registerNetworkCallback(request, networkCallback)

第三步:如果10s内未主动连接上,跳转到WIFI设置页(注意:到这个页面也会主动连接,目测基本100%成功率)

lifecycleScope.launch {delay(10_000)if (!Prefs.isWifiConnected) {val intent = Intent(Settings.ACTION_WIFI_SETTINGS)startActivity(intent)}}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词