至今:
我找到了以下解决方案
广播接收器已从ICS弃用
这肯定会花费很多时间而且效率不高
这肯定会花费很多时间而且效率不高
即使根据网络连接不会花费太多时间,它也可能会有所不同
我的结论:
到目前为止,我发现的所有解决方案要么效率不高,要么不那么可靠.
我的问题:
如果VPN在Android设备中连接,那么android OS必须知道它.
是否有任何公共的android框架API来读取它,因为在本地查找是最有效和最可靠的解决方案?
有没有其他有效和可靠的方法来实现它(比如将C或C plus plus库与NDK集成)?
注意:
我也找不到OpenVPN for Android的任何自定义广播发件人/ AIDL
我正在尝试注册接收器,这将检查VPN状态.我试过这个:在Android上获取VPN连接状态,但看起来它不再适用于ICS.我已经检查了android源代码的一些线索,但没有运气,只注意到在ISC中没有什么像:vpn.connectivity
和connection_state
- 它用于在android 2.3中.也尝试使用android.net.conn.CONNECTIVITY_CHANGE
我的IntentFilter
,但它根本没有对VPN连接做出反应(当然我已经添加了权限android.permission.ACCESS_NETWORK_STATE
).我认为做起来很简单,但我已经没想到怎么做了......有人可以帮我这个吗?
如果流量通过VPN而不使用意图连接到VPNService,如何以编程方式检测.有系统调用吗?
我正在制作一个想要检测 VPN 连接的应用程序。我的问题是我想检测 VPN 连接,如果 VPN 已连接,我不想允许用户使用我的应用程序,如果 VPN 关闭,我想允许用户使用我的应用程序。
在问这个问题之前,我阅读了这个文件 VPNService VPNStatus
但我无法获得解决方案。如果有人知道解决方案,请与我分享。
提前致谢
我有一个VpnService的自定义实现,需要在断开连接时执行一些额外的清理.当我使用服务绑定从我的应用程序停止VpnService时,一切正常,但是当客户端使用系统对话框断开与Vpn的连接时,我需要执行该清理.
那么,我怎样才能找到断开连接并添加一些处理呢?
在Android上获取VPN连接状态 - 这可能是解决方案,但它不适用于Android 4+.
从日志的角度来看,只有两个条目:
03-20 03:27:09.478: INFO/Vpn(504): Switched from org.my.package to [Legacy VPN]
03-20 03:27:09.478: DEBUG/Vpn(504): setting state=IDLE, reason=prepare