替换“vpn.connectivity”广播事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了替换“vpn.connectivity”广播事件相关的知识,希望对你有一定的参考价值。

我有一个问题,我想在android中监控VPN连接的状态。我看到ICS之前我可以在“vpn.connectivity”动作上设置广播接收器,但我没有在ICS或以上看到任何模拟。

目前,我最好的选择似乎是轮询已知只能通过VPN访问的服务器,但由于许多原因,轮询不是一个好的解决方案。有没有人有解决方案来检测Android> 4.0中内置VPN客户端的连接/断开事件?这似乎是一个可以包含在ConnectivityManager广播中的功能。

我已经验证了侦听“vpn.connectivity”Intents的BroadcastReceiver适用于运行3.2的Acer,但不适用于运行4.4的Nexus 7 2013。

更新:

我看到ICS中有一个VpnService类。从我阅读文档看来,这似乎是从您的应用程序中创建VPN。如果系统中的客户端足够,我不想维护VPN客户端。我可能会接受使用这种类型的类作为系统中配置的VPN的传递,但我的直觉告诉我这是不可能的,因为它似乎已经锁定了对系统的可视性VPN配置和事件。

答案

我找到了一种适用于Android 5.0+的新方法。

val request = NetworkRequest.Builder()
        .addTransportType(NetworkCapabilities.TRANSPORT_VPN)
        .removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
        .build()
connectivityManager.registerNetworkCallback(request, yourListener)

以上是关于替换“vpn.connectivity”广播事件的主要内容,如果未能解决你的问题,请参考以下文章

替换法(代入法)求解递归式

JVM 灵性一问——为什么用元空间替换永久代?

Laravel事件不是广播

laravel5.5事件广播系统

自定义广播(BroadcastReceiver)事件 --Android开发

knockoutjs:值绑定独占还是点击事件?