code: private static InetAddress[] getByCommand() {
          try {
              Process process = Runtime.getRuntime().exec("getprop");
              InputStream inputStream = process.getInputStream();
              LineNumberReader lnr = new LineNumberReader(
                      new InputStreamReader(inputStream));
              String line = null;
              ArrayList<InetAddress> servers = new ArrayList<InetAddress>(5);
              while ((line = lnr.readLine()) != null) {
                  int split = line.indexOf("]: [");
                  if (split == -1) {
                      continue;
                  }
                  String property = line.substring(1, split);
                  String value = line.substring(split + 4, line.length() - 1);
                  if (property.endsWith(".dns") || property.endsWith(".dns1") ||
                          property.endsWith(".dns2") || property.endsWith(".dns3") ||
                          property.endsWith(".dns4")) {
  
                      // normalize the address
  
                      InetAddress ip = InetAddress.getByName(value);
  
                      if (ip == null) continue;
  
                      value = ip.getHostAddress();
  
                      if (value == null) continue;
                      if (value.length() == 0) continue;
  
                      servers.add(ip);
                  }
              }
              if (servers.size() > 0) {
                  return servers.toArray(new InetAddress[servers.size()]);
              }
          } catch (IOException e) {
              Logger.getLogger("AndroidDnsServer").log(Level.WARNING, "Exception in findDNSByExec", e);
          }
          return null;
      }
docs: 15ms