在没有Internet的网络上保持连接

时间:2020-08-31 15:27:24

标签: android kotlin android-10.0

我正在尝试连接到没有可用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)

0 个答案:

没有答案