diff --git a/core/java/android/net/NetworkUtils.java b/core/java/android/net/NetworkUtils.java
index 6b1fe99..8a653dd 100644
--- a/core/java/android/net/NetworkUtils.java
+++ b/core/java/android/net/NetworkUtils.java
@@ -174,28 +174,6 @@
         return Integer.reverseBytes(value);
     }
 
-    public static boolean isIpAddress(String address) {
-        //TODO: Add NetworkUtils support for IPv6 configuration and
-        //remove IPv4 validation and use a generic InetAddress validation
-        try {
-            String[] parts = address.split("\\.");
-            if (parts.length != 4) {
-                return false;
-            }
-            int a = Integer.parseInt(parts[0]);
-            if (a < 0 || a > 255) return false;
-            a = Integer.parseInt(parts[1]);
-            if (a < 0 || a > 255) return false;
-            a = Integer.parseInt(parts[2]);
-            if (a < 0 || a > 255) return false;
-            a = Integer.parseInt(parts[3]);
-            if (a < 0 || a > 255) return false;
-        } catch (NumberFormatException ex) {
-            return false;
-        }
-        return true;
-    }
-
     /**
      * Add a default route through the specified gateway.
      * @param interfaceName interface on which the route should be added
