code: private static InetAddress[] getByReflection() {
          try {
              Class<?> SystemProperties =
                      Class.forName("android.os.SystemProperties");
              Method method = SystemProperties.getMethod("get",
                      new Class<?>[]{String.class});
  
              ArrayList<InetAddress> servers = new ArrayList<InetAddress>(5);
  
              for (String propKey : new String[]{
                      "net.dns1", "net.dns2", "net.dns3", "net.dns4"}) {
  
                  String value = (String) method.invoke(null, propKey);
  
                  if (value == null) continue;
                  if (value.length() == 0) continue;
  
                  InetAddress ip = InetAddress.getByName(value);
  
                  if (ip == null) continue;
  
                  value = ip.getHostAddress();
  
                  if (value == null) continue;
                  if (value.length() == 0) continue;
                  if (servers.contains(ip)) continue;
  
                  servers.add(ip);
              }
  
              if (servers.size() > 0) {
                  return servers.toArray(new InetAddress[servers.size()]);
              }
          } catch (Exception e) {
              // we might trigger some problems this way
              Logger.getLogger("AndroidDnsServer").log(Level.WARNING, "Exception in findDNSByReflection", e);
          }
          return null;
      }
docs: 1ms