android - 检查 Android 中的 VPN 连接是否处于 Activity 状态?

标签 android monitoring vpn

我的非 root Android 4.4 设备上有一个第三方 VPN 应用程序,我想编写一个后台服务来监控 VPN 连接并在 VPN 连接断开时提醒用户。

有没有办法做到这一点?我找不到任何使用 VPNService API 的方法。

谢谢-D

最佳答案

使用 NetworkCapabilities 对我有用。您必须遍历所有现有网络并检查哪个具有 VPN_TRANSPORT

ConnectivityManager cm = (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
Network[] networks = cm.getAllNetworks();

Log.i(TAG, "Network count: " + networks.length);
for(int i = 0; i < networks.length; i++) {

  NetworkCapabilities caps = cm.getNetworkCapabilities(networks[i]);

  Log.i(TAG, "Network " + i + ": " + networks[i].toString());
  Log.i(TAG, "VPN transport is: " + caps.hasTransport(NetworkCapabilities.TRANSPORT_VPN));
  Log.i(TAG, "NOT_VPN capability is: " + caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN));

}

关于android - 检查 Android 中的 VPN 连接是否处于 Activity 状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28386553/

相关文章:

android - 以编程方式将颜色 "#e3bb87"添加到 StateListDrawable

java - 在共享 Intent 中传递多个文本/纯值

windows - rdesktop 中正确的键盘映射问题

android - 如何在安卓 Activity 中显示虚拟键盘

android - Python:解压android备份?

java - 卡夫卡连接。如何为连接器启用 jmx 指标

kubernetes - 如何对 kubeadm 上的 metrics-server 进行故障排除?

linux - centeron 插件忽略正则表达式

python-3.x - 使用 python 脚本启动 vpn

java - 从 Java 连接到 CDMA 网络 IN