确定Android VPN接口/ IP?

我正在尝试确定android中PPTP VPN接口的名称,因此我可以将其列为我的应用程序中的可绑定接口。 由于Android中没有VPN API,我想我可以使用直接Java来查找它。

当我使用标准Java获取接口列表时,即。

ArrayList allInterfaces = Collections.list(NetworkInterface.getNetworkInterfaces()); 

我看到一些有趣的事情:

当手机在802.11X Wifi上时

  • tiwlan0(wifi界面)
  • ppp0(VPN)

当手机在Verizon Only上时

  • ppp0(通常是VPN)
  • ppp1(通常是VZ网络)

所以 – 我需要一种消除VZ接口的方法。 您可以从Android API获取NetworkInfo对象,如下所示:

 ConnectivityManager conMan = (ConnectivityManager)this.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo[] infoList = conMan.getAllNetworkInfo(); 

该方法存在一些问题:

  • VPN没有显示出来
  • 网络信息对象中的名称/字段与Java NetworkInterface对象中的任何内容都不对应

我看到它的方式有几种方法可以从所有接口列表中消除VZ接口:

  1. 按名称进行操作(即,如果Android给了我一个包含“ppp1”的列表,我可以消除ppp1,因为Android列表不包含VPN)
  2. 通过IP(即,如果我能找出VZ IP地址,我可以使用Java的NetworkInterface对象消除与该IP的接口)。

不幸的是,看起来这两个选项都不可能,因为名称不匹配,我无法弄清楚如何从Android操作系统获取VZ IP。

那么 – 还有其他人尝试过类似的东西吗? 有没有办法问Android操作系统哪些接口有IP地址?

在此先感谢 – 所有的帮助表示赞赏。

PS。 我试图避免强制用户输入要绑定的有效IP范围(或特定IP)。

编辑:这里有一个可能的选择是使用android原生套件进行JNI系统调用。 阅读/ dev /和grep的目录列表,了解ppp *。 假设最早的是3G / 4g连接,后者是VPN。

使用当前的API(10)发现这是不可能的。 错误报告/function请求:

http://code.google.com/p/android/issues/detail?id=15082