当 *** 连接/断开连接时,ConnectivityManager.NetworkCallback 调用丢失

Posted

技术标签:

【中文标题】当 *** 连接/断开连接时,ConnectivityManager.NetworkCallback 调用丢失【英文标题】:ConnectivityManager.NetworkCallback calls missing when a *** is connected/disconnected 【发布时间】:2021-02-28 18:59:56 【问题描述】:

我的 android 应用已注册 ConnectivityManager onAvailable 和 onLost NetworkCallbacks,但在连接或断开 ***(我正在使用 Open*** 应用测试)时不会调用它们。当蜂窝网络连接/断开时,它们会被调用。

在我连接 *** 之前,allNetworks 显示一个网络:

11-17 16:16:22.719 23531 23531 i Baresip:找到网络106与[传输:蜂窝功能:SUPL&Internet&Not_Restred&Induted&Not_***和验证&not_roaming&foreground&not_congested&not_suspended witt_congested&not_suspended&not_suspended&not_suspended&not_suspended&not_suspended&not_suspended&not_suspended&not_suspended witting

我连接***后,有两个网络:

11-17 16:17:17.464 23531 23531 i baresip:net network 106与[传输:蜂窝功能:supl&Internet&not_Restrict&trusted&not_***和验证&not_roaming&foreground&not_congested&not_suspended&not_suspended wittanted:linkbandwidth> = 51200kbps linkdnbandwidth> = 102400kbps说明符:]

11-17 16:17:17.466 23531 23531 I Baresip:发现网络 225 具有 [传输:*** 功能:INTERNET&NOT_RESTRICTED&TRUSTED&VALIDATED&NOT_ROAMING&FOREGROUND&NOT_CONGESTED&NOT_SUSPENDED 不需要:]

但是当 *** 网络可用时,我的应用程序不会收到关于它的 onAvailable(或任何其他)ConnectivityManager 通知。同样的问题,当我断开 *** 时。

这是 Android 错误还是有其他方法可以获取有关 *** 事件的通知?

编辑:我搜索了 Google 的问题跟踪器,发现完全相同的问题:

https://issuetracker.google.com/issues/138035152

很遗憾,作者没有提供谷歌要求的所有信息,他们关闭了这个问题。

我创建了一个新的错误报告,但很可能它不会导致任何地方:

https://issuetracker.google.com/issues/173534857

所以欢迎来自社区的帮助。

【问题讨论】:

【参考方案1】:

为了在 *** 连接更改时也调用回调,需要从构建器中删除 NetworkCapabilities.NET_CAPABILITY_NOT_***:

val builder = NetworkRequest.Builder()
                .removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_***)

默认情况下,包含该功能。

【讨论】:

以上是关于当 *** 连接/断开连接时,ConnectivityManager.NetworkCallback 调用丢失的主要内容,如果未能解决你的问题,请参考以下文章

当蓝牙断开连接或重新连接时,我的webview会重新加载

当用户遇到错误或与 XMPP 断开连接时重新连接 XMPP

Hazelcast 客户端与整个集群断开连接

当客户端断开连接而不取消连接时,Websocket.ReceiveAsync 导致崩溃

当用户点击广告横幅时,Google Play 游戏服务断开连接

为啥当客户端断开连接时这个简单的 websocket 代码会抛出?