8

In this link there is a way to do it in Android 5 (L). There is a method like this:

public static void setDNS(InetAddress dns1, InetAddress dns2, WifiConfiguration wifiConf)
    throws SecurityException, IllegalArgumentException, NoSuchMethodException, InvocationTargetException,
    NoSuchFieldException, IllegalAccessException {

    Object linkProperties = null;
    ArrayList<InetAddress> mDnses;

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        staticIpConf = wifiConf.getClass().getMethod("getStaticIpConfiguration").invoke(wifiConf);
        mDnses = (ArrayList<InetAddress>) getDeclaredField(staticIpConf, "dnsServers");
    }
    else {
        linkProperties = getField(wifiConf, "linkProperties");
        mDnses = (ArrayList<InetAddress>) getDeclaredField(linkProperties, "mDnses");
    }

    mDnses.clear();
    mDnses.add(dns1);
    mDnses.add(dns2);
}

But in android M there is no field "dnsServers" in the wifi static ip configuration. Does it mean that there is no way to change wifi settings in 6.0?

Community
  • 1
  • 1
xyzklm
  • 81
  • 2

0 Answers0