Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a2b34f88 authored by Paul Duffin's avatar Paul Duffin
Browse files

Add InetAddresses class to API

Adds methods needed by app developers to avoid them having to call
non-SDK APIs.

Test: tests added to cts
Bug: 78686891
Change-Id: Ic0eadfdab2b111d5ca4becb753f4fe3557806433
parent a4d036e9
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -27333,6 +27333,11 @@ package android.net {
    field public int serverAddress;
  }
  public class InetAddresses {
    method public static boolean isNumericAddress(java.lang.String);
    method public static java.net.InetAddress parseNumericAddress(java.lang.String);
  }
  public final class IpPrefix implements android.os.Parcelable {
    method public boolean contains(java.net.InetAddress);
    method public int describeContents();
+63 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.net;

import libcore.net.InetAddressUtils;

import java.net.InetAddress;

/**
 * Utility methods for {@link InetAddress} implementations.
 */
public class InetAddresses {

    private InetAddresses() {}

    /**
     * Checks to see if the {@code address} is a numeric address (such as {@code "192.0.2.1"} or
     * {@code "2001:db8::1:2"}).
     *
     * <p>A numeric address is either an IPv4 address containing exactly 4 decimal numbers or an
     * IPv6 numeric address. IPv4 addresses that consist of either hexadecimal or octal digits or
     * do not have exactly 4 numbers are not treated as numeric.
     *
     * <p>This method will never do a DNS lookup.
     *
     * @param address the address to parse.
     * @return true if the supplied address is numeric, false otherwise.
     */
    public static boolean isNumericAddress(String address) {
        return InetAddressUtils.isNumericAddress(address);
    }

    /**
     * Returns an InetAddress corresponding to the given numeric address (such
     * as {@code "192.168.0.1"} or {@code "2001:4860:800d::68"}).
     *
     * <p>See {@link #isNumericAddress(String)} (String)} for a definition as to what constitutes a
     * numeric address.
     *
     * <p>This method will never do a DNS lookup.
     *
     * @param address the address to parse, must be numeric.
     * @return an {@link InetAddress} instance corresponding to the address.
     * @throws IllegalArgumentException if {@code address} is not a numeric address.
     */
    public static InetAddress parseNumericAddress(String address) {
        return InetAddressUtils.parseNumericAddress(address);
    }
}
+4 −1
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package android.net;

import android.annotation.UnsupportedAppUsage;
import android.os.Build;
import android.os.Parcel;
import android.util.Log;
import android.util.Pair;
@@ -294,8 +295,10 @@ public class NetworkUtils {
     * @param addrString
     * @return the InetAddress
     * @hide
     * @deprecated Use {@link InetAddresses#parseNumericAddress(String)}, if possible.
     */
    @UnsupportedAppUsage
    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P)
    @Deprecated
    public static InetAddress numericToInetAddress(String addrString)
            throws IllegalArgumentException {
        return InetAddress.parseNumericAddress(addrString);