开发者

Set Android IP,DNS,GATEWAY setting programmatically

How do I set wifi ip address, dns address, gateway from android java i.e progra开发者_如何学编程mmatically, I didn't find any method which has the capability to store the values.


You can change system settings programatically.

First you need to request the 'WRITE_SETTINGS' permission in your 'AndroidManifest.xml':

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

Then you need to actually change the setting using the following code:

    android.provider.Settings.System.putString(getContentResolver(), android.provider.Settings.System.WIFI_USE_STATIC_IP, "0");
    android.provider.Settings.System.putString(getContentResolver(), android.provider.Settings.System.WIFI_STATIC_DNS1, "192.168.0.2");
    android.provider.Settings.System.putString(getContentResolver(), android.provider.Settings.System.WIFI_STATIC_DNS2, "192.168.0.3");
    android.provider.Settings.System.putString(getContentResolver(), android.provider.Settings.System.WIFI_STATIC_GATEWAY, "192.168.0.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_STATIC_IP, "1");

The current settings can be accessed via the same method but use 'getString' instead of 'putString'.

For information about the settings option visit the reference here: Settings.System | Android Developers


You can't do this from an application.

Would you like applications on your phone to change phone's settings at will?


Not sure it will help but it's possible to manually set an alternative ip,gateway, dns etc for a particular access point in the Wireless settings. Whether you can do this automatically or using an intent is another question?

I just saw this which might be helpful

How can i call Wi-Fi settings screen from my application using Android


android.provider.Settings.System.putString is deprecated now this is the new method https://developer.android.com/reference/android/net/wifi/WifiManager also i don't know how to use this new method, if someone knows that please learn it to me too


the follow code can also do that:

    WifiManager mWifiManager = (WifiManager)mContext.getSystemService(Context.WIFI_SERVICE);
    DhcpInfo dhcpInfo = mWifiManager.getDhcpInfo();
    int dns1 = dhcpInfo.dns1;
    int dns2 = dhcpInfo.dns2;
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜