用于在Android应用程序中配置静态IP地址的API

时间:2010-05-27 15:26:25

标签: android networking ipv6 ipv4

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

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

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

1 个答案:

答案 0 :(得分: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)。