2012-09-12 95 views
4

再次陷入同样的​​问题。Android:如何为新的WiFi配置设置静态IP

我发现周围,我们可以设置静态系统设置是这样的:

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模式!

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

+0

通常,正确的解决方案是让您的Android设备保持独立(DHCP),并将其MAC地址反馈到DHCP服务器的配置中,并反馈“静态”数据。 – mah

+0

我看到我可以用android wifi设置设置stati IP ...我真的不明白为什么谷歌使这些事情如此复杂。无论如何,我正在连接到一个非常简单的无线微芯片,无法处理mac地址的提要 –

回答

1

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

有人说:

“你可以使用NDK - 这让你的Android下对Linux低级别的访问。警告:不要期望这是记录或支持他们甚至可能会从Android禁止你。市场(我知道我会)”

对于那些谁希望有一些expriences与NDK,这里是一个链接:

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

祝你好运,得到S-如果您发现有趣的东西,请点击反馈!

3

我想你应该是这样的:

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?

+0

是的,所有权限都设置为 –

+0

尝试将WIFI_USE_STATIC_IP设置为0开头,然后将其设置为1。 – Zedot

+0

它适合你吗?也许这是一个与我的接入点有关的问题。但它仍然在DHCP ... –