Loading api/current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -45422,6 +45422,7 @@ package android.telephony { method public long getDataLimitBytes(); method public long getDataUsageBytes(); method public long getDataUsageTime(); method @Nullable public int[] getNetworkTypes(); method @Nullable public CharSequence getSummary(); method @Nullable public CharSequence getTitle(); method public void writeToParcel(android.os.Parcel, int); Loading @@ -45441,6 +45442,7 @@ package android.telephony { method public static android.telephony.SubscriptionPlan.Builder createRecurring(java.time.ZonedDateTime, java.time.Period); method public android.telephony.SubscriptionPlan.Builder setDataLimit(long, int); method public android.telephony.SubscriptionPlan.Builder setDataUsage(long, long); method @NonNull public android.telephony.SubscriptionPlan.Builder setNetworkTypes(@Nullable int[]); method public android.telephony.SubscriptionPlan.Builder setSummary(@Nullable CharSequence); method public android.telephony.SubscriptionPlan.Builder setTitle(@Nullable CharSequence); } core/java/android/net/INetworkPolicyListener.aidl +3 −1 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ */ package android.net; import android.telephony.SubscriptionPlan; /** {@hide} */ oneway interface INetworkPolicyListener { Loading @@ -22,5 +23,6 @@ oneway interface INetworkPolicyListener { void onMeteredIfacesChanged(in String[] meteredIfaces); void onRestrictBackgroundChanged(boolean restrictBackground); void onUidPoliciesChanged(int uid, int uidPolicies); void onSubscriptionOverride(int subId, int overrideMask, int overrideValue, long networkTypeMask); void onSubscriptionOverride(int subId, int overrideMask, int overrideValue); void onSubscriptionPlansChanged(int subId, in SubscriptionPlan[] plans); } core/java/android/net/INetworkPolicyManager.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -76,7 +76,7 @@ interface INetworkPolicyManager { SubscriptionPlan[] getSubscriptionPlans(int subId, String callingPackage); void setSubscriptionPlans(int subId, in SubscriptionPlan[] plans, String callingPackage); String getSubscriptionPlansOwner(int subId); void setSubscriptionOverride(int subId, int overrideMask, int overrideValue, long networkTypeMask, long timeoutMillis, String callingPackage); void setSubscriptionOverride(int subId, int overrideMask, int overrideValue, long timeoutMillis, String callingPackage); void factoryReset(String subscriber); Loading core/java/android/net/NetworkPolicyManager.java +4 −2 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import android.net.wifi.WifiInfo; import android.os.Build; import android.os.RemoteException; import android.os.UserHandle; import android.telephony.SubscriptionPlan; import android.util.DebugUtils; import android.util.Pair; import android.util.Range; Loading Loading @@ -380,7 +381,8 @@ public class NetworkPolicyManager { @Override public void onMeteredIfacesChanged(String[] meteredIfaces) { } @Override public void onRestrictBackgroundChanged(boolean restrictBackground) { } @Override public void onUidPoliciesChanged(int uid, int uidPolicies) { } @Override public void onSubscriptionOverride(int subId, int overrideMask, int overrideValue, long networkTypeMask) { } @Override public void onSubscriptionOverride(int subId, int overrideMask, int overrideValue) { } @Override public void onSubscriptionPlansChanged(int subId, SubscriptionPlan[] plans) { } } } core/java/android/telephony/SubscriptionPlan.java +55 −2 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.annotation.Nullable; import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; import android.telephony.Annotation.NetworkType; import android.util.Range; import android.util.RecurrenceRule; Loading @@ -33,6 +34,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.time.Period; import java.time.ZonedDateTime; import java.util.Arrays; import java.util.Iterator; import java.util.Objects; Loading Loading @@ -80,6 +82,8 @@ public final class SubscriptionPlan implements Parcelable { private int dataLimitBehavior = LIMIT_BEHAVIOR_UNKNOWN; private long dataUsageBytes = BYTES_UNKNOWN; private long dataUsageTime = TIME_UNKNOWN; private @NetworkType int[] networkTypes; private long networkTypesBitMask; private SubscriptionPlan(RecurrenceRule cycleRule) { this.cycleRule = Preconditions.checkNotNull(cycleRule); Loading @@ -93,6 +97,7 @@ public final class SubscriptionPlan implements Parcelable { dataLimitBehavior = source.readInt(); dataUsageBytes = source.readLong(); dataUsageTime = source.readLong(); networkTypes = source.createIntArray(); } @Override Loading @@ -109,6 +114,7 @@ public final class SubscriptionPlan implements Parcelable { dest.writeInt(dataLimitBehavior); dest.writeLong(dataUsageBytes); dest.writeLong(dataUsageTime); dest.writeIntArray(networkTypes); } @Override Loading @@ -121,13 +127,14 @@ public final class SubscriptionPlan implements Parcelable { .append(" dataLimitBehavior=").append(dataLimitBehavior) .append(" dataUsageBytes=").append(dataUsageBytes) .append(" dataUsageTime=").append(dataUsageTime) .append(" networkTypes=").append(Arrays.toString(networkTypes)) .append("}").toString(); } @Override public int hashCode() { return Objects.hash(cycleRule, title, summary, dataLimitBytes, dataLimitBehavior, dataUsageBytes, dataUsageTime); dataUsageBytes, dataUsageTime, Arrays.hashCode(networkTypes)); } @Override Loading @@ -140,7 +147,8 @@ public final class SubscriptionPlan implements Parcelable { && dataLimitBytes == other.dataLimitBytes && dataLimitBehavior == other.dataLimitBehavior && dataUsageBytes == other.dataUsageBytes && dataUsageTime == other.dataUsageTime; && dataUsageTime == other.dataUsageTime && Arrays.equals(networkTypes, other.networkTypes); } return false; } Loading Loading @@ -203,6 +211,32 @@ public final class SubscriptionPlan implements Parcelable { return dataUsageTime; } /** * Return an array containing all {@link NetworkType}s this SubscriptionPlan applies to. * A null array means this SubscriptionPlan applies to all network types. */ public @Nullable @NetworkType int[] getNetworkTypes() { return networkTypes; } /** * Return the networkTypes array converted to a {@link TelephonyManager.NetworkTypeBitMask} * @hide */ public long getNetworkTypesBitMask() { // calculate bitmask the first time and save for future calls if (networkTypesBitMask == 0) { if (networkTypes == null) { networkTypesBitMask = ~0; } else { for (int networkType : networkTypes) { networkTypesBitMask |= TelephonyManager.getBitMaskForNetworkType(networkType); } } } return networkTypesBitMask; } /** * Return an iterator that will return all valid data usage cycles based on * any recurrence rules. The iterator starts from the currently active cycle Loading Loading @@ -335,5 +369,24 @@ public final class SubscriptionPlan implements Parcelable { plan.dataUsageTime = dataUsageTime; return this; } /** * Set the network types this SubscriptionPlan applies to. * The developer must supply at least one plan that applies to all network types (default), * and all additional plans may not include a particular network type more than once. * Plan selection will prefer plans that have specific network types defined * over plans that apply to all network types. * * @param networkTypes a set of all {@link NetworkType}s that apply to this plan. * A null value or empty array means the plan applies to all network types. */ public @NonNull Builder setNetworkTypes(@Nullable @NetworkType int[] networkTypes) { if (networkTypes == null || networkTypes.length == 0) { plan.networkTypes = null; } else { plan.networkTypes = networkTypes; } return this; } } } Loading
api/current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -45422,6 +45422,7 @@ package android.telephony { method public long getDataLimitBytes(); method public long getDataUsageBytes(); method public long getDataUsageTime(); method @Nullable public int[] getNetworkTypes(); method @Nullable public CharSequence getSummary(); method @Nullable public CharSequence getTitle(); method public void writeToParcel(android.os.Parcel, int); Loading @@ -45441,6 +45442,7 @@ package android.telephony { method public static android.telephony.SubscriptionPlan.Builder createRecurring(java.time.ZonedDateTime, java.time.Period); method public android.telephony.SubscriptionPlan.Builder setDataLimit(long, int); method public android.telephony.SubscriptionPlan.Builder setDataUsage(long, long); method @NonNull public android.telephony.SubscriptionPlan.Builder setNetworkTypes(@Nullable int[]); method public android.telephony.SubscriptionPlan.Builder setSummary(@Nullable CharSequence); method public android.telephony.SubscriptionPlan.Builder setTitle(@Nullable CharSequence); }
core/java/android/net/INetworkPolicyListener.aidl +3 −1 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ */ package android.net; import android.telephony.SubscriptionPlan; /** {@hide} */ oneway interface INetworkPolicyListener { Loading @@ -22,5 +23,6 @@ oneway interface INetworkPolicyListener { void onMeteredIfacesChanged(in String[] meteredIfaces); void onRestrictBackgroundChanged(boolean restrictBackground); void onUidPoliciesChanged(int uid, int uidPolicies); void onSubscriptionOverride(int subId, int overrideMask, int overrideValue, long networkTypeMask); void onSubscriptionOverride(int subId, int overrideMask, int overrideValue); void onSubscriptionPlansChanged(int subId, in SubscriptionPlan[] plans); }
core/java/android/net/INetworkPolicyManager.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -76,7 +76,7 @@ interface INetworkPolicyManager { SubscriptionPlan[] getSubscriptionPlans(int subId, String callingPackage); void setSubscriptionPlans(int subId, in SubscriptionPlan[] plans, String callingPackage); String getSubscriptionPlansOwner(int subId); void setSubscriptionOverride(int subId, int overrideMask, int overrideValue, long networkTypeMask, long timeoutMillis, String callingPackage); void setSubscriptionOverride(int subId, int overrideMask, int overrideValue, long timeoutMillis, String callingPackage); void factoryReset(String subscriber); Loading
core/java/android/net/NetworkPolicyManager.java +4 −2 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import android.net.wifi.WifiInfo; import android.os.Build; import android.os.RemoteException; import android.os.UserHandle; import android.telephony.SubscriptionPlan; import android.util.DebugUtils; import android.util.Pair; import android.util.Range; Loading Loading @@ -380,7 +381,8 @@ public class NetworkPolicyManager { @Override public void onMeteredIfacesChanged(String[] meteredIfaces) { } @Override public void onRestrictBackgroundChanged(boolean restrictBackground) { } @Override public void onUidPoliciesChanged(int uid, int uidPolicies) { } @Override public void onSubscriptionOverride(int subId, int overrideMask, int overrideValue, long networkTypeMask) { } @Override public void onSubscriptionOverride(int subId, int overrideMask, int overrideValue) { } @Override public void onSubscriptionPlansChanged(int subId, SubscriptionPlan[] plans) { } } }
core/java/android/telephony/SubscriptionPlan.java +55 −2 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.annotation.Nullable; import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; import android.telephony.Annotation.NetworkType; import android.util.Range; import android.util.RecurrenceRule; Loading @@ -33,6 +34,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.time.Period; import java.time.ZonedDateTime; import java.util.Arrays; import java.util.Iterator; import java.util.Objects; Loading Loading @@ -80,6 +82,8 @@ public final class SubscriptionPlan implements Parcelable { private int dataLimitBehavior = LIMIT_BEHAVIOR_UNKNOWN; private long dataUsageBytes = BYTES_UNKNOWN; private long dataUsageTime = TIME_UNKNOWN; private @NetworkType int[] networkTypes; private long networkTypesBitMask; private SubscriptionPlan(RecurrenceRule cycleRule) { this.cycleRule = Preconditions.checkNotNull(cycleRule); Loading @@ -93,6 +97,7 @@ public final class SubscriptionPlan implements Parcelable { dataLimitBehavior = source.readInt(); dataUsageBytes = source.readLong(); dataUsageTime = source.readLong(); networkTypes = source.createIntArray(); } @Override Loading @@ -109,6 +114,7 @@ public final class SubscriptionPlan implements Parcelable { dest.writeInt(dataLimitBehavior); dest.writeLong(dataUsageBytes); dest.writeLong(dataUsageTime); dest.writeIntArray(networkTypes); } @Override Loading @@ -121,13 +127,14 @@ public final class SubscriptionPlan implements Parcelable { .append(" dataLimitBehavior=").append(dataLimitBehavior) .append(" dataUsageBytes=").append(dataUsageBytes) .append(" dataUsageTime=").append(dataUsageTime) .append(" networkTypes=").append(Arrays.toString(networkTypes)) .append("}").toString(); } @Override public int hashCode() { return Objects.hash(cycleRule, title, summary, dataLimitBytes, dataLimitBehavior, dataUsageBytes, dataUsageTime); dataUsageBytes, dataUsageTime, Arrays.hashCode(networkTypes)); } @Override Loading @@ -140,7 +147,8 @@ public final class SubscriptionPlan implements Parcelable { && dataLimitBytes == other.dataLimitBytes && dataLimitBehavior == other.dataLimitBehavior && dataUsageBytes == other.dataUsageBytes && dataUsageTime == other.dataUsageTime; && dataUsageTime == other.dataUsageTime && Arrays.equals(networkTypes, other.networkTypes); } return false; } Loading Loading @@ -203,6 +211,32 @@ public final class SubscriptionPlan implements Parcelable { return dataUsageTime; } /** * Return an array containing all {@link NetworkType}s this SubscriptionPlan applies to. * A null array means this SubscriptionPlan applies to all network types. */ public @Nullable @NetworkType int[] getNetworkTypes() { return networkTypes; } /** * Return the networkTypes array converted to a {@link TelephonyManager.NetworkTypeBitMask} * @hide */ public long getNetworkTypesBitMask() { // calculate bitmask the first time and save for future calls if (networkTypesBitMask == 0) { if (networkTypes == null) { networkTypesBitMask = ~0; } else { for (int networkType : networkTypes) { networkTypesBitMask |= TelephonyManager.getBitMaskForNetworkType(networkType); } } } return networkTypesBitMask; } /** * Return an iterator that will return all valid data usage cycles based on * any recurrence rules. The iterator starts from the currently active cycle Loading Loading @@ -335,5 +369,24 @@ public final class SubscriptionPlan implements Parcelable { plan.dataUsageTime = dataUsageTime; return this; } /** * Set the network types this SubscriptionPlan applies to. * The developer must supply at least one plan that applies to all network types (default), * and all additional plans may not include a particular network type more than once. * Plan selection will prefer plans that have specific network types defined * over plans that apply to all network types. * * @param networkTypes a set of all {@link NetworkType}s that apply to this plan. * A null value or empty array means the plan applies to all network types. */ public @NonNull Builder setNetworkTypes(@Nullable @NetworkType int[] networkTypes) { if (networkTypes == null || networkTypes.length == 0) { plan.networkTypes = null; } else { plan.networkTypes = networkTypes; } return this; } } }