diff --git a/core/api/system-current.txt b/core/api/system-current.txt index ae6e58c7ed486..b5b87c1353e7c 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -14155,6 +14155,7 @@ package android.telephony.data { ctor public QualifiedNetworksService.NetworkAvailabilityProvider(int); method public abstract void close(); method public final int getSlotIndex(); + method public void reportEmergencyDataNetworkPreferredTransportChanged(int); method public void reportThrottleStatusChanged(@NonNull java.util.List); method public final void updateQualifiedNetworkTypes(int, @NonNull java.util.List); } diff --git a/telephony/java/android/telephony/data/IQualifiedNetworksService.aidl b/telephony/java/android/telephony/data/IQualifiedNetworksService.aidl index ba2b62d14bece..8e2707735f63b 100644 --- a/telephony/java/android/telephony/data/IQualifiedNetworksService.aidl +++ b/telephony/java/android/telephony/data/IQualifiedNetworksService.aidl @@ -27,4 +27,5 @@ interface IQualifiedNetworksService oneway void createNetworkAvailabilityProvider(int slotId, IQualifiedNetworksServiceCallback callback); oneway void removeNetworkAvailabilityProvider(int slotId); oneway void reportThrottleStatusChanged(int slotId, in List statuses); + oneway void reportEmergencyDataNetworkPreferredTransportChanged (int slotId, int transportType); } diff --git a/telephony/java/android/telephony/data/QualifiedNetworksService.java b/telephony/java/android/telephony/data/QualifiedNetworksService.java index fb973361e398f..56f0f9f137727 100644 --- a/telephony/java/android/telephony/data/QualifiedNetworksService.java +++ b/telephony/java/android/telephony/data/QualifiedNetworksService.java @@ -68,6 +68,7 @@ public abstract class QualifiedNetworksService extends Service { private static final int QNS_REMOVE_ALL_NETWORK_AVAILABILITY_PROVIDERS = 3; private static final int QNS_UPDATE_QUALIFIED_NETWORKS = 4; private static final int QNS_APN_THROTTLE_STATUS_CHANGED = 5; + private static final int QNS_EMERGENCY_DATA_NETWORK_PREFERRED_TRANSPORT_CHANGED = 6; private final HandlerThread mHandlerThread; @@ -192,6 +193,20 @@ public abstract class QualifiedNetworksService extends Service { Log.d(TAG, "reportThrottleStatusChanged: statuses size=" + statuses.size()); } + /** + * The framework calls this method when the preferred transport type used to set up + * emergency data network is changed. + * + * This method is meant to be overridden. + * + * @param transportType transport type changed to be preferred + */ + public void reportEmergencyDataNetworkPreferredTransportChanged( + @AccessNetworkConstants.TransportType int transportType) { + Log.d(TAG, "reportEmergencyDataNetworkPreferredTransportChanged: " + + AccessNetworkConstants.transportTypeToString(transportType)); + } + /** * Called when the qualified networks provider is removed. The extended class should * implement this method to perform cleanup works. @@ -237,6 +252,13 @@ public abstract class QualifiedNetworksService extends Service { } break; + case QNS_EMERGENCY_DATA_NETWORK_PREFERRED_TRANSPORT_CHANGED: + if (provider != null) { + int transportType = (int) message.arg2; + provider.reportEmergencyDataNetworkPreferredTransportChanged(transportType); + } + break; + case QNS_REMOVE_NETWORK_AVAILABILITY_PROVIDER: if (provider != null) { provider.close(); @@ -332,6 +354,14 @@ public abstract class QualifiedNetworksService extends Service { mHandler.obtainMessage(QNS_APN_THROTTLE_STATUS_CHANGED, slotIndex, 0, statuses) .sendToTarget(); } + + @Override + public void reportEmergencyDataNetworkPreferredTransportChanged(int slotIndex, + @AccessNetworkConstants.TransportType int transportType) { + mHandler.obtainMessage( + QNS_EMERGENCY_DATA_NETWORK_PREFERRED_TRANSPORT_CHANGED, + slotIndex, transportType).sendToTarget(); + } } private void log(String s) {