http://code.google.com/p/android/issues/detail?id=15082
аюсь определить имя интерфейса 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, используя объект Java NetworkInterface.)К сожалению, похоже, что ни один из этих вариантов невозможен, поскольку имена не совпадают, и я не могу понять, как получить VZ IP из ОС Android.
Итак, кто-нибудь еще пробовал что-то подобное? Есть ли способ спросить у андроид ОС, какие интерфейсы имеют IP-адреса?
Заранее спасибо - вся помощь приветствуется.
Дэн
PS. Я пытаюсь не заставлять пользователя вводить допустимый диапазон IP-адресов (или определенный IP-адрес) для привязки.