android - 在没有 Internet 的网络上保持连接
问题描述
我正在尝试连接到没有可用 Internet 连接的 Android 10 上的 Wi-Fi 热点。问题是,一旦我连接并且设备检测到没有连接,它就会回到另一个可用互联网的连接。
在查找了我能做什么之后,我发现了这段代码,据说它会强制留下:
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 年前创建的,所以我想我可能会再问一次。
有谁知道我可以保持连接到这个网络的更新方式?
这是我用来连接到热点顺便说一句的代码:
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)
解决方案
推荐阅读
- linkedin - 哪个版本的 UGC 文档是正确的?
- python - 追加 numpy 一维数组不会导致矩阵
- java - 如下图所示创建页面(关于/我的主页/参考标签)的最佳方式是什么?
- pandas - 如何从列中完全删除一个元素?
- windows - @echo off 在批处理脚本中不起作用
- amazon-dynamodb - 为包含数百万个项目的 DynamoDB 表中的每个项目添加一个属性
- pandas - 使用下面的代码选择列但只获得第一行
- css - 如何使用外部css文件中的less添加类
- sql - Hive 查询:根据优先级和日期计算最大指标值
- php - PHP - 访问关系以避免嵌套 foreach