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-адрес) для привязки.

Ответы на вопрос(2)

Ваш ответ на вопрос