12

是否可以在应用程序中设置 Android 中接口的 IP 地址?

我可以使用 查询可用的接口及其当前地址java.net.NetworkInterface,但这不提供更改这些的工具。我只是在某个地方错过了什么,还是不允许?

我希望能够使我的应用程序在运行时在“现成”设备上更改或添加一个或多个现有接口的别名。(2.1/2.2)。理想情况下,我想对IPv4IPv6地址都这样做。

4

1 回答 1

16

Settings.System包括几个你可以使用的标志:

  • WIFI_USE_STATIC_IP
  • WIFI_STATIC_IP
  • WIFI_STATIC_NETMASK
  • WIFI_STATIC_GATEWAY
  • WIFI_STATIC_DNS1WIFI_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

如果您想更改运营商的 3G/4G 等接口的 IP 地址,我认为这是不可能的 - 因为它已连接到运营商并使用他们的 DHCP/安全性来使您能够连接和使用他们的服务(排序就像在未经 ISP 同意的情况下更改电缆调制解调器的外部 IP)。

于 2011-08-29T15:24:00.033 回答