Android:如何为新的WiFi配置设置静态IP

时间:2012-09-12 19:29:57

标签: java android static ip wifi

再次坚持同样的问题。

我发现我们可以像这样设置静态系统设置:

System.putString(getContentResolver(), android.provider.Settings.System.WIFI_USE_STATIC_IP, "1"); // to define it use static ip's
System.putString(getContentResolver(), android.provider.Settings.System.WIFI_STATIC_IP,"192.168.1.15");
System.putString(getContentResolver(), android.provider.Settings.System.WIFI_STATIC_NETMASK,"255.255.255.0");
System.putString(getContentResolver(), android.provider.Settings.System.WIFI_STATIC_DNS1,"192.168.1.1");
System.putString(getContentResolver(), android.provider.Settings.System.WIFI_STATIC_GATEWAY,"192.168.1.1");

没有成功!

我不明白何时设置这些设置?

我应该在创建wifi配置之前,还是在保存wifi配置之后,甚至在激活之前或之后都这样做?

但是,我已经尝试了所有可能的情况,当我查看Android WiFi设置时,我发现它仍然在DHCP上。

之前的一个问题,即How to configue a static IP address, netmask, gateway programmatically on Android 3.x or 4.x已完全毁了我的Android设备,现在它无法切换 在它的WiFi上了。

我也在HTC手机上尝试过静态IP,但没有成功,它始终处于DHCP模式!

我是否需要拨打“重新连接”命令?如果是,那么以哪种方式?

2 个答案:

答案 0 :(得分:4)

我认为你应该看起来像:

android.provider.Settings.System.putString(getContentResolver(),android.provider.Settings.System.WIFI_STATIC_IP,"192.168.1.15");
android.provider.Settings.System.putString(getContentResolver(),android.provider.Settings.System.WIFI_STATIC_DNS1, "192.168.1.1");        
android.provider.Settings.System.putString(getContentResolver(),android.provider.Settings.System.WIFI_STATIC_GATEWAY, "192.168.1.1");   
android.provider.Settings.System.putString(getContentResolver(),android.provider.Settings.System.WIFI_STATIC_NETMASK, "255.255.255.0");                 
android.provider.Settings.System.putString(getContentResolver(),android.provider.Settings.System.WIFI_USE_STATIC_IP, "1");

不要忘记清单:

<uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission>

关于您设备的WiFi问题,您可以尝试以编程方式切换WIFI。这篇文章可能会有帮助: How to programmatically turn off WiFi on Android device?

答案 1 :(得分:2)

经过一年多的时间,我放弃了设置静态IP(或DHCP,DNS,...)。简单地说,这是不可能的,或者更好的是,它不允许(来自任意应用程序)。

有人说:

“您可以使用NDK - 这可以让您在Android下对Linux进行低级别访问。警告:不要指望将其记录或支持。他们甚至可能禁止您进入Android Market(我知道我会)“

对于那些想要与NDK有一些经验的人,这里有一个链接:

http://developer.android.com/tools/sdk/ndk/index.html

祝你好运,如果你发现有趣的事情,请提供一些反馈!