代码之家  ›  专栏  ›  技术社区  ›  Flexo - Save the data dump sunny moon

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

  •  12
  • Flexo - Save the data dump sunny moon  · 技术社区  · 16 年前

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

    我可以使用 java.net.NetworkInterface 但这并不能提供一个设施来改变这些。我是错过了什么,还是不允许?

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

    1 回复  |  直到 12 年前
        1
  •  16
  •   CrackerJack9    14 年前

    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
    

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

    推荐文章