我正在尝试连接到没有可用Internet连接的Android 10上的Wi-Fi热点。问题是,一旦我连接上设备并且设备检测到没有连接,它就会返回到具有Internet可用的另一个连接。
在查找了我所能做的之后,我发现了这段代码,该代码可能会导致停留:
val manager = applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
val mWifiLock: WifiManager.WifiLock = manager.createWifiLock(WifiManager.WIFI_MODE_FULL, "wifiLock")
if (! mWifiLock.isHeld) {
mWifiLock.acquire()
}
不幸的是,该代码已被弃用,不再起作用。到目前为止,我发现的唯一可行的解决方案是禁用其他网络。我还在StackOverflow上发现了完全相同的问题的其他线程,但是这些线程是1年前创建的,所以我想我可能会再问一次。
有人知道我可以与该网络保持联系的最新方式吗?
这是我用于连接热点btw的代码:
val wifiNetworkSpecifier = WifiNetworkSpecifier.Builder()
.setSsid(ssid)
.setWpa2Passphrase(pass)
.build()
val wifiRequest = NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.setNetworkSpecifier(wifiNetworkSpecifier)
.build()
val connectivity = applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager?
val networkCallback = object : ConnectivityManager.NetworkCallback() {
override fun onUnavailable() {
super.onUnavailable()
}
override fun onLosing(network: Network, maxMsToLive: Int) {
super.onLosing(network, maxMsToLive)
listener(false)
}
override fun onLost(network: Network) {
super.onLost(network)
listener(false)
}
override fun onAvailable(network: Network) {
super.onAvailable(network)
connectivity?.bindProcessToNetwork(network)
//Code to force-stay
listener(true)
}
}
connectivity?.requestNetwork(wifiRequest, networkCallback)