API для настройки статических IP-адресов в приложении Android - PullRequest
12 голосов
/ 27 мая 2010

Можно ли установить IP-адрес интерфейса в Android в приложении?

Я могу запросить доступные интерфейсы и их текущие адреса, используя java.net.NetworkInterface, но это не дает возможности изменить их. Я что-то где-то пропустил или это не разрешено?

Я надеялся, что смогу изменить свое приложение или добавить псевдоним к одному или нескольким существующим интерфейсам во время выполнения на «готовом» устройстве. (2,1 / 2,2). В идеале я хотел бы сделать это для адресов IPv4 и IPv6 .

1 Ответ

16 голосов
/ 29 августа 2011

Settings.System включает в себя несколько флагов, которые вы можете использовать для этого:

  • WIFI_USE_STATIC_IP
  • WIFI_STATIC_IP
  • WIFI_STATIC_NETMASK
  • WIFI_STATIC_GATEWAY
  • WIFI_STATIC_DNS1 и WIFI_STATIC_DNS2

Вам также потребуется разрешение android.permission.WRITE_SETTINGS, заявленное для вашего приложения.

Тогда в вашей деятельности:

final ContentResolver cr = getContentResolver();
Settings.System.putInt(cr, Settings.System.WIFI_USE_STATIC_IP, 1);
Settings.System.putString(cr, Settings.System.WIFI_STATIC_IP, "you.re.ip.addr");
// call putString() for each value to set for your interface

Если вы хотите изменить IP-адрес интерфейса 3G / 4G и т. Д. Оператора, я не верю, что это возможно - поскольку он подключен к оператору и использует его DHCP / безопасность для подключения и использования услуги (вроде изменения внешнего IP-адреса вашего кабельного модема без согласия вашего провайдера).

...