2012-09-12 121 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 ... –