我的 Android 应用程序已注册 ConnectivityManager onAvailable 和 onLost NetworkCallbacks,但当 VPN(我正在使用 OpenVPN 应用程序进行测试)连接或断开连接时,不会调用它们。当蜂窝网络连接/断开时,他们确实会被呼叫。
在我连接 VPN 之前,allNetworks 显示一个网络:
11-17 16:16:22.719 23531 23531 I Baresip : 找到网络 106 [ 传输:蜂窝功能:SUPL&INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN&VALIDATED&NOT_ROAMING&FOREGROUND&NOT_CONGESTED&NOT_SUSPENDED 不需要的:LinkUpBandwidth>=5 1200Kbps LinkDnBandwidth>=102400Kbps 说明符:<6>]
连接VPN后,有两个网络:
11-17 16:17:17.464 23531 23531 I Baresip : 找到网络 106 [ 传输:蜂窝功能:SUPL&INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN&VALIDATED&NOT_ROAMING&FOREGROUND&NOT_CONGESTED&NOT_SUSPENDED 不需要的:LinkUpBandwidth>=5 1200Kbps LinkDnBandwidth>=102400Kbps 说明符:<6>]
11-17 16:17:17.466 23531 23531 I Baresip : 找到网络 225 [ 传输:VPN 功能:INTERNET&NOT_RESTRICTED&TRUSTED&VALIDATED&NOT_ROAMING&FOREGROUND&NOT_CONGESTED&NOT_SUSPENDED 不需要的:]
但是,当 VPN 网络可用时,我的应用程序不会收到有关它的可用(或任何其他)ConnectivityManager 通知。同样的问题,当我断开 VPN 时。
这是 Android 错误还是有其他方法可以获取有关 VPN 事件的通知?
编辑:我搜索了谷歌的问题跟踪器并发现了完全相同的问题:
https://issuetracker.google.com/issues/138035152
不幸的是,作者没有提供谷歌要求的所有信息,他们关闭了这个问题。
我创建了一个新的错误报告,但很可能它不会导致任何结果:
https://issuetracker.google.com/issues/173534857
因此,欢迎社区的帮助。