Я пытаюсь определить имя интерфейса PPTP VPN в Android, чтобы я мог указать его в качестве привязываемого интерфейса в моем приложении.Поскольку в Android нет VPN API для этого - я подумал, что мог бы использовать прямую Java, чтобы найти ее.
Когда я делаю вашу стандартную Java, чтобы получить список интерфейсов, т. Е.
ArrayList<NetworkInterface> allInterfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
Я вижу несколько интересных вещей:
Когда телефон работает по 802.11X Wi-Fi
- tiwlan0 (интерфейс wifi)
- ppp0 (VPN)
Когда телефон работает только на Verizon
- ppp0 (обычно VPN)
- ppp1 (обычно сеть VZ)
Итак - мне нужен способ устранить интерфейс VZ.Вы можете получить объекты NetworkInfo из Android API следующим образом:
ConnectivityManager conMan = (ConnectivityManager)this.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] infoList = conMan.getAllNetworkInfo();
Есть несколько проблем с этим методом:
- VPN не отображается
- Имена / поля в объектах информации о сети не соответствуют чему-либо в объекте Java NetworkInterface
На мой взгляд, есть несколько способов исключить интерфейс VZ из списка всех интерфейсов.:
- Сделайте это по имени (т. Е. Если бы Android дал мне список, в котором было "ppp1", я мог бы удалить ppp1, так как список Android никогда не содержит VPN)
- Сделайте это по IP (то есть, если бы я мог определить IP-адрес VZ, я мог бы исключить интерфейс с этим IP, используя объект NetworkInterface Java.)
К сожалению, это не похоже налюбой из этих вариантов возможен, поскольку имена не совпадают, и я не могу понять, как получить IP-адрес VZ от ОС Android.
Итак, кто-нибудь еще пробовал что-то подобное?Есть ли способ спросить у ОС Android, какие интерфейсы имеют IP-адреса?
Заранее спасибо - вся помощь приветствуется.
Дан
PS.Я пытаюсь не заставлять пользователя вводить допустимый диапазон IP-адресов (или определенный IP-адрес) для привязки.