【问题标题】:Replacement for "vpn.connectivity" Broadcast Events替换“vpn.connectivity”广播事件
【发布时间】:2023-03-27 20:08:01
【问题描述】:

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

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

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

更新:

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

【问题讨论】:

    标签: android broadcastreceiver vpn


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-01-25
      • 2016-06-12
      • 2017-05-04
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多