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