diff options
| -rwxr-xr-x | api/system-current.txt | 1 | ||||
| -rw-r--r-- | telephony/java/android/telephony/ServiceState.java | 40 |
2 files changed, 30 insertions, 11 deletions
diff --git a/api/system-current.txt b/api/system-current.txt index dfa0a23fa6a1..58b95ebafa5e 100755 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -10278,6 +10278,7 @@ package android.telephony { method @NonNull public android.telephony.ServiceState createLocationInfoSanitizedCopy(boolean); method public void fillInNotifierBundle(@NonNull android.os.Bundle); method public int getDataRegistrationState(); + method public boolean getDataRoamingFromRegistration(); method @Nullable public android.telephony.NetworkRegistrationInfo getNetworkRegistrationInfo(int, int); method @NonNull public java.util.List<android.telephony.NetworkRegistrationInfo> getNetworkRegistrationInfoList(); method @NonNull public java.util.List<android.telephony.NetworkRegistrationInfo> getNetworkRegistrationInfoListForDomain(int); diff --git a/telephony/java/android/telephony/ServiceState.java b/telephony/java/android/telephony/ServiceState.java index 2c62d0667e19..e18b5804bd4f 100644 --- a/telephony/java/android/telephony/ServiceState.java +++ b/telephony/java/android/telephony/ServiceState.java @@ -16,8 +16,6 @@ package android.telephony; -import com.android.telephony.Rlog; - import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; @@ -36,6 +34,8 @@ import android.telephony.NetworkRegistrationInfo.Domain; import android.telephony.NetworkRegistrationInfo.NRState; import android.text.TextUtils; +import com.android.telephony.Rlog; + import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; @@ -353,6 +353,7 @@ public class ServiceState implements Parcelable { private String mOperatorAlphaLongRaw; private String mOperatorAlphaShortRaw; + private boolean mIsDataRoamingFromRegistration; private boolean mIsIwlanPreferred; /** @@ -438,6 +439,7 @@ public class ServiceState implements Parcelable { mNrFrequencyRange = s.mNrFrequencyRange; mOperatorAlphaLongRaw = s.mOperatorAlphaLongRaw; mOperatorAlphaShortRaw = s.mOperatorAlphaShortRaw; + mIsDataRoamingFromRegistration = s.mIsDataRoamingFromRegistration; mIsIwlanPreferred = s.mIsIwlanPreferred; } @@ -472,6 +474,7 @@ public class ServiceState implements Parcelable { mNrFrequencyRange = in.readInt(); mOperatorAlphaLongRaw = in.readString(); mOperatorAlphaShortRaw = in.readString(); + mIsDataRoamingFromRegistration = in.readBoolean(); mIsIwlanPreferred = in.readBoolean(); } @@ -499,6 +502,7 @@ public class ServiceState implements Parcelable { out.writeInt(mNrFrequencyRange); out.writeString(mOperatorAlphaLongRaw); out.writeString(mOperatorAlphaShortRaw); + out.writeBoolean(mIsDataRoamingFromRegistration); out.writeBoolean(mIsIwlanPreferred); } @@ -649,7 +653,9 @@ public class ServiceState implements Parcelable { } /** - * Get current data network roaming type + * Get whether the current data network is roaming. + * This value may be overwritten by resource overlay or carrier configuration. + * @see #getDataRoamingFromRegistration() to get the value from the network registration. * @return roaming type * @hide */ @@ -659,18 +665,25 @@ public class ServiceState implements Parcelable { } /** - * Get whether data network registration state is roaming + * Set whether the data network registration state is roaming. + * This should only be set to the roaming value received + * once the data registration phase has completed. + * @hide + */ + public void setDataRoamingFromRegistration(boolean dataRoaming) { + mIsDataRoamingFromRegistration = dataRoaming; + } + + /** + * Get whether data network registration state is roaming. + * This value is set directly from the modem and will not be overwritten + * by resource overlay or carrier configuration. * @return true if registration indicates roaming, false otherwise * @hide */ + @SystemApi public boolean getDataRoamingFromRegistration() { - final NetworkRegistrationInfo regState = getNetworkRegistrationInfo( - NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN); - if (regState != null) { - return regState.getRegistrationState() - == NetworkRegistrationInfo.REGISTRATION_STATE_ROAMING; - } - return false; + return mIsDataRoamingFromRegistration; } /** @@ -873,6 +886,7 @@ public class ServiceState implements Parcelable { mNrFrequencyRange, mOperatorAlphaLongRaw, mOperatorAlphaShortRaw, + mIsDataRoamingFromRegistration, mIsIwlanPreferred); } } @@ -903,6 +917,7 @@ public class ServiceState implements Parcelable { && mNetworkRegistrationInfos.size() == s.mNetworkRegistrationInfos.size() && mNetworkRegistrationInfos.containsAll(s.mNetworkRegistrationInfos) && mNrFrequencyRange == s.mNrFrequencyRange + && mIsDataRoamingFromRegistration == s.mIsDataRoamingFromRegistration && mIsIwlanPreferred == s.mIsIwlanPreferred; } } @@ -1062,6 +1077,8 @@ public class ServiceState implements Parcelable { .append(", mNrFrequencyRange=").append(mNrFrequencyRange) .append(", mOperatorAlphaLongRaw=").append(mOperatorAlphaLongRaw) .append(", mOperatorAlphaShortRaw=").append(mOperatorAlphaShortRaw) + .append(", mIsDataRoamingFromRegistration=") + .append(mIsDataRoamingFromRegistration) .append(", mIsIwlanPreferred=").append(mIsIwlanPreferred) .append("}").toString(); } @@ -1102,6 +1119,7 @@ public class ServiceState implements Parcelable { } mOperatorAlphaLongRaw = null; mOperatorAlphaShortRaw = null; + mIsDataRoamingFromRegistration = false; mIsIwlanPreferred = false; } |