【发布时间】:2021-05-02 18:21:00
【问题描述】:
我有一个 Android VPN 应用程序。当我启动 VPN 的意图时(通过VPNService.prepare),如果设备上已经配置了永远在线的 VPN,它会立即失败。这似乎是合理的,但我希望能够轻松检测到这种情况,以便向用户显示有用的消息。
“永远在线”是指特定的 VPN 永远在线 Android VPN 标志:https://developer.android.com/guide/topics/connectivity/vpn#always-on
我似乎找不到访问该信息的方法,即使它在 Android 内部使用(例如 here,但 getAlwaysOnVpnPackage 似乎并未公开提供 AFAICT)。
我见过的最佳选择是Check if a VPN connection is active in Android?,它会告诉您当前是否有任何 VPN 连接处于活动状态,但这还不够,因为:
- 我不想了解临时 VPN 连接:我只对 始终在线 VPN 连接感兴趣。
- 有时“始终在线”连接实际上并不总是在线。如果您的连接断开并将其设置为“始终在线”,则它已配置为这样,并阻止所有其他 VPN 安装,但没有创建网络连接(Android 会显示持续警告,这会将您带到另一个应用程序激活连接)。因为没有连接,所以上述技术不起作用。我仍然需要检测这种情况,因为它仍然会阻止我的 VPN 设置。
有什么方法可以检查设备当前是否有配置为“始终在线”的 VPN?
【问题讨论】:
-
由于涉及多个问题而关闭,我认为这是对问题的误解。这里有几个示例,但它们是同一个问题的示例:我想访问有关当前 VPN 配置的信息,而不是活动的 VPN 网络连接。我添加了更多细节来尝试澄清这一点。
-
AFAIK,您需要成为设备所有者/管理员才能获取此信息。
标签: android network-programming vpn