我的安卓应用程序已经注册了ConnectivityManager onAvailable和onLost NetworkCallbacks,但当VPN (我正在用OpenVPN应用程序测试)连接或断开连接时,它们不会被调用。当蜂窝网络连接/断开时,它们确实会被调用。
在我连接虚拟专用网之前,allNetworks显示了一个网络:
11-17 16:16: 23531 23531 I Baresip : Found network 22.719 with Transports:蜂窝功能: SUPL&INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN&VALIDATED&NOT_ROAMING&FOREGROUND&NOT_CONGESTED&NOT_SUSPENDED不想要的: LinkUpBandwidth>=51200Kbps LinkDnBandwidth>=102400Kbps规范:<6>
连接VPN后,有两个网络:
11-17 16:17: 23531 23531 I Baresip : Found network 17.464 with Transports:蜂窝功能: SUPL&INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN&VALIDATED&NOT_ROAMING&FOREGROUND&NOT_CONGESTED&NOT_SUSPENDED不想要的: LinkUpBandwidth>=51200Kbps LinkDnBandwidth>=102400Kbps规范:<6>
11-17 16:17: 23531 23531 I Baresip : Found network 225 with Transports: VPN Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&VALIDATED&NOT_ROAMING&FOREGROUND&NOT_CONGESTED&NOT_SUSPENDED Unwanted:
但当VPN网络可用时,我的应用程序不会收到有关它的onAvailable (或任何其他) ConnectivityManager通知。同样的问题,当我断开VPN连接时。
这是Android的bug吗?还是有其他方式可以通知VPN事件?
编辑:我搜索了Google的问题跟踪器,发现了完全相同的问题:
https://issuetracker.google.com/issues/138035152
不幸的是,作者没有提供谷歌要求的所有信息,他们结束了这个问题。
我创建了一个新的bug报告,但它很可能不会有任何结果:
https://issuetracker.google.com/issues/173534857
因此,欢迎来自社区的帮助。
发布于 2020-12-03 16:29:07
为了在VPN连接发生变化时调用回调,需要从构建器中删除NetworkCapabilities.NET_CAPABILITY_NOT_VPN:
val builder = NetworkRequest.Builder()
.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)默认情况下,包含该功能。
https://stackoverflow.com/questions/64877331
复制相似问题