Loading packages/Connectivity/framework/api/current.txt +0 −2 Original line number Original line Diff line number Diff line Loading @@ -298,7 +298,6 @@ package android.net { method @Nullable public android.net.NetworkSpecifier getNetworkSpecifier(); method @Nullable public android.net.NetworkSpecifier getNetworkSpecifier(); method public int getOwnerUid(); method public int getOwnerUid(); method public int getSignalStrength(); method public int getSignalStrength(); method @NonNull public java.util.Set<java.lang.Integer> getSubIds(); method @Nullable public android.net.TransportInfo getTransportInfo(); method @Nullable public android.net.TransportInfo getTransportInfo(); method public boolean hasCapability(int); method public boolean hasCapability(int); method public boolean hasTransport(int); method public boolean hasTransport(int); Loading Loading @@ -408,7 +407,6 @@ package android.net { method public android.net.NetworkRequest.Builder removeTransportType(int); method public android.net.NetworkRequest.Builder removeTransportType(int); method @Deprecated public android.net.NetworkRequest.Builder setNetworkSpecifier(String); method @Deprecated public android.net.NetworkRequest.Builder setNetworkSpecifier(String); method public android.net.NetworkRequest.Builder setNetworkSpecifier(android.net.NetworkSpecifier); method public android.net.NetworkRequest.Builder setNetworkSpecifier(android.net.NetworkSpecifier); method @NonNull public android.net.NetworkRequest.Builder setSubIds(@NonNull java.util.Set<java.lang.Integer>); } } public class ParseException extends java.lang.RuntimeException { public class ParseException extends java.lang.RuntimeException { Loading packages/Connectivity/framework/api/system-current.txt +2 −0 Original line number Original line Diff line number Diff line Loading @@ -275,6 +275,7 @@ package android.net { method @NonNull public int[] getAdministratorUids(); method @NonNull public int[] getAdministratorUids(); method @Nullable public static String getCapabilityCarrierName(int); method @Nullable public static String getCapabilityCarrierName(int); method @Nullable public String getSsid(); method @Nullable public String getSsid(); method @NonNull public java.util.Set<java.lang.Integer> getSubIds(); method @NonNull public int[] getTransportTypes(); method @NonNull public int[] getTransportTypes(); method public boolean isPrivateDnsBroken(); method public boolean isPrivateDnsBroken(); method public boolean satisfiedByNetworkCapabilities(@Nullable android.net.NetworkCapabilities); method public boolean satisfiedByNetworkCapabilities(@Nullable android.net.NetworkCapabilities); Loading Loading @@ -328,6 +329,7 @@ package android.net { public static class NetworkRequest.Builder { public static class NetworkRequest.Builder { method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP) public android.net.NetworkRequest.Builder setSignalStrength(int); 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<java.lang.Integer>); } } public final class NetworkScore implements android.os.Parcelable { public final class NetworkScore implements android.os.Parcelable { Loading packages/Connectivity/framework/src/android/net/NetworkCapabilities.java +13 −0 Original line number Original line Diff line number Diff line Loading @@ -2363,9 +2363,15 @@ public final class NetworkCapabilities implements Parcelable { /** /** * Gets the subscription ID set that associated to this network or request. * Gets the subscription ID set that associated to this network or request. * * <p>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 * @return * @hide */ */ @NonNull @NonNull @SystemApi public Set<Integer> getSubIds() { public Set<Integer> getSubIds() { return new ArraySet<>(mSubIds); return new ArraySet<>(mSubIds); } } Loading Loading @@ -2730,10 +2736,17 @@ public final class NetworkCapabilities implements Parcelable { /** /** * Set the subscription ID set. * Set the subscription ID set. * * * <p>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. * @param subIds a set that represent the subscription IDs. Empty if clean up. * @return this builder. * @return this builder. * @hide */ */ @NonNull @NonNull @SystemApi public Builder setSubIds(@NonNull final Set<Integer> subIds) { public Builder setSubIds(@NonNull final Set<Integer> subIds) { mCaps.setSubIds(subIds); mCaps.setSubIds(subIds); return this; return this; Loading packages/Connectivity/framework/src/android/net/NetworkRequest.java +5 −0 Original line number Original line Diff line number Diff line Loading @@ -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. * 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. * An empty set matches all networks, including those without a subId. * * * <p>Registering a NetworkRequest with a non-empty set of subIds requires the * NETWORK_FACTORY permission. * * @param subIds A {@code Set} that represents subscription IDs. * @param subIds A {@code Set} that represents subscription IDs. * @hide */ */ @NonNull @NonNull @SystemApi public Builder setSubIds(@NonNull Set<Integer> subIds) { public Builder setSubIds(@NonNull Set<Integer> subIds) { mNetworkCapabilities.setSubIds(subIds); mNetworkCapabilities.setSubIds(subIds); return this; return this; Loading services/core/java/com/android/server/ConnectivityService.java +8 −0 Original line number Original line Diff line number Diff line Loading @@ -1895,6 +1895,10 @@ public class ConnectivityService extends IConnectivityManager.Stub newNc.setNetworkSpecifier(newNc.getNetworkSpecifier().redact()); newNc.setNetworkSpecifier(newNc.getNetworkSpecifier().redact()); } } newNc.setAdministratorUids(new int[0]); newNc.setAdministratorUids(new int[0]); if (!checkAnyPermissionOf( callerPid, callerUid, android.Manifest.permission.NETWORK_FACTORY)) { newNc.setSubIds(Collections.emptySet()); } return newNc; return newNc; } } Loading Loading @@ -5666,6 +5670,10 @@ public class ConnectivityService extends IConnectivityManager.Stub "Insufficient permissions to request a specific signal strength"); "Insufficient permissions to request a specific signal strength"); } } mAppOpsManager.checkPackage(callerUid, callerPackageName); mAppOpsManager.checkPackage(callerUid, callerPackageName); if (!nc.getSubIds().isEmpty()) { enforceNetworkFactoryPermission(); } } } private int[] getSignalStrengthThresholds(@NonNull final NetworkAgentInfo nai) { private int[] getSignalStrengthThresholds(@NonNull final NetworkAgentInfo nai) { Loading Loading
packages/Connectivity/framework/api/current.txt +0 −2 Original line number Original line Diff line number Diff line Loading @@ -298,7 +298,6 @@ package android.net { method @Nullable public android.net.NetworkSpecifier getNetworkSpecifier(); method @Nullable public android.net.NetworkSpecifier getNetworkSpecifier(); method public int getOwnerUid(); method public int getOwnerUid(); method public int getSignalStrength(); method public int getSignalStrength(); method @NonNull public java.util.Set<java.lang.Integer> getSubIds(); method @Nullable public android.net.TransportInfo getTransportInfo(); method @Nullable public android.net.TransportInfo getTransportInfo(); method public boolean hasCapability(int); method public boolean hasCapability(int); method public boolean hasTransport(int); method public boolean hasTransport(int); Loading Loading @@ -408,7 +407,6 @@ package android.net { method public android.net.NetworkRequest.Builder removeTransportType(int); method public android.net.NetworkRequest.Builder removeTransportType(int); method @Deprecated public android.net.NetworkRequest.Builder setNetworkSpecifier(String); method @Deprecated public android.net.NetworkRequest.Builder setNetworkSpecifier(String); method public android.net.NetworkRequest.Builder setNetworkSpecifier(android.net.NetworkSpecifier); method public android.net.NetworkRequest.Builder setNetworkSpecifier(android.net.NetworkSpecifier); method @NonNull public android.net.NetworkRequest.Builder setSubIds(@NonNull java.util.Set<java.lang.Integer>); } } public class ParseException extends java.lang.RuntimeException { public class ParseException extends java.lang.RuntimeException { Loading
packages/Connectivity/framework/api/system-current.txt +2 −0 Original line number Original line Diff line number Diff line Loading @@ -275,6 +275,7 @@ package android.net { method @NonNull public int[] getAdministratorUids(); method @NonNull public int[] getAdministratorUids(); method @Nullable public static String getCapabilityCarrierName(int); method @Nullable public static String getCapabilityCarrierName(int); method @Nullable public String getSsid(); method @Nullable public String getSsid(); method @NonNull public java.util.Set<java.lang.Integer> getSubIds(); method @NonNull public int[] getTransportTypes(); method @NonNull public int[] getTransportTypes(); method public boolean isPrivateDnsBroken(); method public boolean isPrivateDnsBroken(); method public boolean satisfiedByNetworkCapabilities(@Nullable android.net.NetworkCapabilities); method public boolean satisfiedByNetworkCapabilities(@Nullable android.net.NetworkCapabilities); Loading Loading @@ -328,6 +329,7 @@ package android.net { public static class NetworkRequest.Builder { public static class NetworkRequest.Builder { method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP) public android.net.NetworkRequest.Builder setSignalStrength(int); 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<java.lang.Integer>); } } public final class NetworkScore implements android.os.Parcelable { public final class NetworkScore implements android.os.Parcelable { Loading
packages/Connectivity/framework/src/android/net/NetworkCapabilities.java +13 −0 Original line number Original line Diff line number Diff line Loading @@ -2363,9 +2363,15 @@ public final class NetworkCapabilities implements Parcelable { /** /** * Gets the subscription ID set that associated to this network or request. * Gets the subscription ID set that associated to this network or request. * * <p>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 * @return * @hide */ */ @NonNull @NonNull @SystemApi public Set<Integer> getSubIds() { public Set<Integer> getSubIds() { return new ArraySet<>(mSubIds); return new ArraySet<>(mSubIds); } } Loading Loading @@ -2730,10 +2736,17 @@ public final class NetworkCapabilities implements Parcelable { /** /** * Set the subscription ID set. * Set the subscription ID set. * * * <p>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. * @param subIds a set that represent the subscription IDs. Empty if clean up. * @return this builder. * @return this builder. * @hide */ */ @NonNull @NonNull @SystemApi public Builder setSubIds(@NonNull final Set<Integer> subIds) { public Builder setSubIds(@NonNull final Set<Integer> subIds) { mCaps.setSubIds(subIds); mCaps.setSubIds(subIds); return this; return this; Loading
packages/Connectivity/framework/src/android/net/NetworkRequest.java +5 −0 Original line number Original line Diff line number Diff line Loading @@ -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. * 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. * An empty set matches all networks, including those without a subId. * * * <p>Registering a NetworkRequest with a non-empty set of subIds requires the * NETWORK_FACTORY permission. * * @param subIds A {@code Set} that represents subscription IDs. * @param subIds A {@code Set} that represents subscription IDs. * @hide */ */ @NonNull @NonNull @SystemApi public Builder setSubIds(@NonNull Set<Integer> subIds) { public Builder setSubIds(@NonNull Set<Integer> subIds) { mNetworkCapabilities.setSubIds(subIds); mNetworkCapabilities.setSubIds(subIds); return this; return this; Loading
services/core/java/com/android/server/ConnectivityService.java +8 −0 Original line number Original line Diff line number Diff line Loading @@ -1895,6 +1895,10 @@ public class ConnectivityService extends IConnectivityManager.Stub newNc.setNetworkSpecifier(newNc.getNetworkSpecifier().redact()); newNc.setNetworkSpecifier(newNc.getNetworkSpecifier().redact()); } } newNc.setAdministratorUids(new int[0]); newNc.setAdministratorUids(new int[0]); if (!checkAnyPermissionOf( callerPid, callerUid, android.Manifest.permission.NETWORK_FACTORY)) { newNc.setSubIds(Collections.emptySet()); } return newNc; return newNc; } } Loading Loading @@ -5666,6 +5670,10 @@ public class ConnectivityService extends IConnectivityManager.Stub "Insufficient permissions to request a specific signal strength"); "Insufficient permissions to request a specific signal strength"); } } mAppOpsManager.checkPackage(callerUid, callerPackageName); mAppOpsManager.checkPackage(callerUid, callerPackageName); if (!nc.getSubIds().isEmpty()) { enforceNetworkFactoryPermission(); } } } private int[] getSignalStrengthThresholds(@NonNull final NetworkAgentInfo nai) { private int[] getSignalStrengthThresholds(@NonNull final NetworkAgentInfo nai) { Loading