到目前为止:
我发现以下解决方案
广播接收器已从ICS
肯定要花很多时间,而且效率不高
肯定要花很多时间,而且效率不高
即使根据网络连接花费的时间不多,但
我的结论是:
到目前为止,我发现的所有解决方案都不高效或不太可靠。
我的问题:
如果在Android设备中连接了VPN,则Android OS必须知道它。
是否有任何公开的Android框架API可以读取它,因为在本地找到它是最有效,最可靠的解决方案?
还有其他有效且可靠的方法来实现它(例如将C或C plus plus库与NDK集成在一起)吗?
注意:
我也找不到来自Android的OpenVPN的任何自定义广播发件人/AIDL
最佳答案
您可以尝试检查tun0 INTERFACE,它是在建立命令后启动的。
try {
for( NetworkInterface intf : Collections.list(NetworkInterface.getNetworkInterfaces())) {
// Pass over dormant interfaces
if(!intf.isUp() || intf.getInterfaceAddresses().size() == 0)
continue;
if ("tun0".equals(intf.getName())){
// The VPN is up
break;
}
}
}
这也可能起作用:(Collections.list(NetworkInterface.getByName("tun0")