diff --git a/framework/api/current.txt b/framework/api/current.txt index 0a9560a5c5..ab290f9d70 100644 --- a/framework/api/current.txt +++ b/framework/api/current.txt @@ -298,7 +298,6 @@ package android.net { method @Nullable public android.net.NetworkSpecifier getNetworkSpecifier(); method public int getOwnerUid(); method public int getSignalStrength(); - method @NonNull public java.util.Set getSubIds(); method @Nullable public android.net.TransportInfo getTransportInfo(); method public boolean hasCapability(int); method public boolean hasTransport(int); @@ -408,7 +407,6 @@ package android.net { method public android.net.NetworkRequest.Builder removeTransportType(int); method @Deprecated public android.net.NetworkRequest.Builder setNetworkSpecifier(String); method public android.net.NetworkRequest.Builder setNetworkSpecifier(android.net.NetworkSpecifier); - method @NonNull public android.net.NetworkRequest.Builder setSubIds(@NonNull java.util.Set); } public class ParseException extends java.lang.RuntimeException { diff --git a/framework/api/system-current.txt b/framework/api/system-current.txt index d5660e16b1..0a82cb7cfe 100644 --- a/framework/api/system-current.txt +++ b/framework/api/system-current.txt @@ -275,6 +275,7 @@ package android.net { method @NonNull public int[] getAdministratorUids(); method @Nullable public static String getCapabilityCarrierName(int); method @Nullable public String getSsid(); + method @NonNull public java.util.Set getSubIds(); method @NonNull public int[] getTransportTypes(); method public boolean isPrivateDnsBroken(); method public boolean satisfiedByNetworkCapabilities(@Nullable android.net.NetworkCapabilities); @@ -328,6 +329,7 @@ package android.net { public static class NetworkRequest.Builder { method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP) public android.net.NetworkRequest.Builder setSignalStrength(int); + method @NonNull public android.net.NetworkRequest.Builder setSubIds(@NonNull java.util.Set); } public final class NetworkScore implements android.os.Parcelable { diff --git a/framework/src/android/net/NetworkCapabilities.java b/framework/src/android/net/NetworkCapabilities.java index d3f7e3a432..d39f4fb70b 100644 --- a/framework/src/android/net/NetworkCapabilities.java +++ b/framework/src/android/net/NetworkCapabilities.java @@ -2363,9 +2363,15 @@ public final class NetworkCapabilities implements Parcelable { /** * Gets the subscription ID set that associated to this network or request. + * + *

Instances of NetworkCapabilities will only have this field populated by the system if the + * receiver holds the NETWORK_FACTORY permission. In all other cases, it will be the empty set. + * * @return + * @hide */ @NonNull + @SystemApi public Set getSubIds() { return new ArraySet<>(mSubIds); } @@ -2730,10 +2736,17 @@ public final class NetworkCapabilities implements Parcelable { /** * Set the subscription ID set. * + *

SubIds are populated in NetworkCapability instances from the system only for callers + * that hold the NETWORK_FACTORY permission. Similarly, the system will reject any + * NetworkRequests filed with a non-empty set of subIds unless the caller holds the + * NETWORK_FACTORY permission. + * * @param subIds a set that represent the subscription IDs. Empty if clean up. * @return this builder. + * @hide */ @NonNull + @SystemApi public Builder setSubIds(@NonNull final Set subIds) { mCaps.setSubIds(subIds); return this; diff --git a/framework/src/android/net/NetworkRequest.java b/framework/src/android/net/NetworkRequest.java index 38691ef5cb..5d40417440 100644 --- a/framework/src/android/net/NetworkRequest.java +++ b/framework/src/android/net/NetworkRequest.java @@ -501,9 +501,14 @@ public class NetworkRequest implements Parcelable { * A network will satisfy this request only if it matches one of the subIds in this set. * An empty set matches all networks, including those without a subId. * + *

Registering a NetworkRequest with a non-empty set of subIds requires the + * NETWORK_FACTORY permission. + * * @param subIds A {@code Set} that represents subscription IDs. + * @hide */ @NonNull + @SystemApi public Builder setSubIds(@NonNull Set subIds) { mNetworkCapabilities.setSubIds(subIds); return this;