API для настройки статических IP-адресов в приложении Android

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

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

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

1 ответ

Решение

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-адреса вашего кабельного модема без согласия вашего интернет-провайдера).

Другие вопросы по тегам