【问题标题】:How to detect if WiFi access point has just lost internet connection in Android如何检测WiFi接入点是否刚刚在Android中失去了互联网连接
【发布时间】:2018-10-02 07:25:18
【问题描述】:

我正在寻找一种方法来应对以下情况:

  • 我已连接到 WiFi
  • 接入点刚刚失去互联网连接(例如,路由器的电缆已被移除)

在这种情况下,Android 手机或笔记本电脑会收到有关该状态的通知,并在 WiFi 图标旁边显示感叹号。

是否可以在 Android API 中收到有关该状态的通知?我正在查看文档,但没有找到任何文档。

重要提示: 我不是在寻找手动检查互联网连接或只是监听网络连接状态的变化,因为当我连接的 WiFi 接入点失去连接时,我不会收到通知。

所以关于上面我试图检查网络连接的变化,但正如我解释的那样,这对我的情况来说是不够的:

override fun onReceive(context: Context, intent: Intent) {
val wifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 
DEFAULT_WIFI_STATE_VALUE)
wifiStateSubject.onNext(wifiState)
Timber.d("Current wifi state: $wifiState")
}

【问题讨论】:

  • 大声笑..这与我的问题有什么关系?更好的是,有更好的工具来对事件做出反应(Rx)
  • 你说I was looking for a way to react a case这就是这个库所做的@Konrad
  • 这在这里不太重要(我有多种对事件做出反应的方式)。我感兴趣的是我的事件案例(如何找到它)

标签: android performance kotlin android-wifi


【解决方案1】:

您可以定期尝试访问一些具有低 ping 和低超时率的资源,如果它抛出某种 NetworkException,您可以认为该连接不可用。

UPD:

您可以使用或检查此库https://github.com/pwittchen/NetworkEvents

【讨论】:

  • 是的,我认为这个问题可以自己实现,但我想知道是否有一些 API 可以为我提供这种特定状态
  • @Konrad 好吧,我不知道 Android SDK 中的 Class 用于此目的。但你可以使用github.com/pwittchen/NetworkEvents 这个例如 ir 尝试自己检查 SDK/github)
  • 谢谢,你知道它是否也可以检查蜂窝信号状态吗?像 PhoneStateListener 和 TelephonyManager?
  • @Konrad 不幸的是我没有
猜你喜欢
  • 1970-01-01
  • 2021-10-30
  • 1970-01-01
  • 1970-01-01
  • 2011-11-02
  • 2023-03-30
  • 2017-07-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多