diff --git a/core/java/android/net/NetworkCapabilities.java b/core/java/android/net/NetworkCapabilities.java index adbb185200..0bb26323a5 100644 --- a/core/java/android/net/NetworkCapabilities.java +++ b/core/java/android/net/NetworkCapabilities.java @@ -84,6 +84,13 @@ public final class NetworkCapabilities implements Parcelable { public Collection getNetworkCapabilities() { return enumerateBits(mNetworkCapabilities); } + public boolean hasCapability(int networkCapability) { + if (networkCapability < MIN_NET_CAPABILITY || + networkCapability > MAX_NET_CAPABILITY) { + return false; + } + return ((mNetworkCapabilities & (1 << networkCapability)) != 0); + } private Collection enumerateBits(long val) { ArrayList result = new ArrayList(); @@ -142,6 +149,12 @@ public final class NetworkCapabilities implements Parcelable { public Collection getTransportTypes() { return enumerateBits(mTransportTypes); } + public boolean hasTransport(int transportType) { + if (transportType < MIN_TRANSPORT || transportType > MAX_TRANSPORT) { + return false; + } + return ((mTransportTypes & (1 << transportType)) != 0); + } private void combineTransportTypes(NetworkCapabilities nc) { this.mTransportTypes |= nc.mTransportTypes; @@ -205,7 +218,8 @@ public final class NetworkCapabilities implements Parcelable { * {@hide} */ public boolean satisfiedByNetworkCapabilities(NetworkCapabilities nc) { - return (satisfiedByNetCapabilities(nc) && + return (nc != null && + satisfiedByNetCapabilities(nc) && satisfiedByTransportTypes(nc) && satisfiedByLinkBandwidths(nc)); }