diff options
5 files changed, 115 insertions, 7 deletions
diff --git a/api/system-current.txt b/api/system-current.txt index 83ab384ca68f..7978df920b11 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -9239,14 +9239,17 @@ package android.telephony.ims { } public class ImsUtListener { + method public void onLineIdentificationSupplementaryServiceResponse(int, @NonNull android.telephony.ims.ImsSsInfo); method public void onSupplementaryServiceIndication(android.telephony.ims.ImsSsData); method public void onUtConfigurationCallBarringQueried(int, android.telephony.ims.ImsSsInfo[]); method public void onUtConfigurationCallForwardQueried(int, android.telephony.ims.ImsCallForwardInfo[]); method public void onUtConfigurationCallWaitingQueried(int, android.telephony.ims.ImsSsInfo[]); - method public void onUtConfigurationQueried(int, android.os.Bundle); + method @Deprecated public void onUtConfigurationQueried(int, android.os.Bundle); method public void onUtConfigurationQueryFailed(int, android.telephony.ims.ImsReasonInfo); method public void onUtConfigurationUpdateFailed(int, android.telephony.ims.ImsReasonInfo); method public void onUtConfigurationUpdated(int); + field @Deprecated public static final String BUNDLE_KEY_CLIR = "queryClir"; + field @Deprecated public static final String BUNDLE_KEY_SSINFO = "imsSsInfo"; } public abstract class ImsVideoCallProvider { diff --git a/telephony/java/android/telephony/ims/ImsSsInfo.java b/telephony/java/android/telephony/ims/ImsSsInfo.java index be34f9db3e54..0510a0012426 100644 --- a/telephony/java/android/telephony/ims/ImsSsInfo.java +++ b/telephony/java/android/telephony/ims/ImsSsInfo.java @@ -336,4 +336,31 @@ public final class ImsSsInfo implements Parcelable { public @ClirInterrogationStatus int getClirInterrogationStatus() { return mClirInterrogationStatus; } + + /** + * Parts of telephony still use the old {m,n} 3GPP definition, so convert to that format. + * @hide + */ + public int[] getCompatArray(@ImsSsData.ServiceType int type) { + int[] result = new int[2]; + // Convert ImsSsInfo into a form that telephony can read (as per 3GPP 27.007) + // CLIR (section 7.7) + if (type == ImsSsData.SS_CLIR) { + // Assume there will only be one ImsSsInfo. + // contains {"n","m"} parameters + result[0] = getClirOutgoingState(); + result[1] = getClirInterrogationStatus(); + return result; + } + // COLR 7.31 + if (type == ImsSsData.SS_COLR) { + result[0] = getProvisionStatus(); + } + // Facility Lock CLCK 7.4 (for call barring), CLIP 7.6, COLP 7.8, as well as any + // other result, just return the status for the "n" parameter and provisioning status for + // "m" as the default. + result[0] = getStatus(); + result[1] = getProvisionStatus(); + return result; + } } diff --git a/telephony/java/android/telephony/ims/ImsUtListener.java b/telephony/java/android/telephony/ims/ImsUtListener.java index d50a0f738b25..1a21d0aa0c76 100644 --- a/telephony/java/android/telephony/ims/ImsUtListener.java +++ b/telephony/java/android/telephony/ims/ImsUtListener.java @@ -16,22 +16,53 @@ package android.telephony.ims; +import android.annotation.NonNull; import android.annotation.SystemApi; import android.os.Bundle; import android.os.RemoteException; +import android.telephony.ims.stub.ImsUtImplBase; import android.util.Log; import com.android.ims.internal.IImsUtListener; /** - * Base implementation of the IMS UT listener interface, which implements stubs. - * Override these methods to implement functionality. + * Listener interface used to receive network responses back from UT supplementary service queries + * made by the framework. * @hide */ // DO NOT remove or change the existing APIs, only add new ones to this Base implementation or you // will break other implementations of ImsUt maintained by other ImsServices. @SystemApi public class ImsUtListener { + + /** + * The {@link Bundle} key for a Calling Line Identification Restriction (CLIR) response. The + * value will be an int[] with two values: + * int[0] contains the 'n' parameter from TS 27.007 7.7, which is the + * outgoing CLIR state. See {@link ImsSsInfo#CLIR_OUTGOING_DEFAULT}, + * {@link ImsSsInfo#CLIR_OUTGOING_INVOCATION}, and {@link ImsSsInfo#CLIR_OUTGOING_SUPPRESSION}; + * int[1] contains the 'm' parameter from TS 27.007 7.7, which is the CLIR interrogation status. + * See {@link ImsSsInfo#CLIR_STATUS_NOT_PROVISIONED}, + * {@link ImsSsInfo#CLIR_STATUS_PROVISIONED_PERMANENT}, {@link ImsSsInfo#CLIR_STATUS_UNKNOWN}, + * {@link ImsSsInfo#CLIR_STATUS_TEMPORARILY_RESTRICTED}, and + * {@link ImsSsInfo#CLIR_STATUS_TEMPORARILY_ALLOWED}. + * @deprecated Use {@link #onLineIdentificationSupplementaryServiceResponse(int, ImsSsInfo)} + * instead. + */ + @Deprecated + public static final String BUNDLE_KEY_CLIR = "queryClir"; + + /** + * The {@link Bundle} key for a Calling Line Identification Presentation (CLIP), Connected Line + * Identification Presentation (COLP), or Connected Line Identification Restriction (COLR) + * response. The value will be an instance of {@link ImsSsInfo}, which contains the response to + * the query. + * @deprecated Use {@link #onLineIdentificationSupplementaryServiceResponse(int, ImsSsInfo)} + * instead. + */ + @Deprecated + public static final String BUNDLE_KEY_SSINFO = "imsSsInfo"; + private IImsUtListener mServiceInterface; private static final String LOG_TAG = "ImsUtListener"; @@ -51,14 +82,54 @@ public class ImsUtListener { } } - public void onUtConfigurationQueried(int id, Bundle ssInfo) { + /** + * Notify the framework of a UT configuration response to a {@link ImsUtImplBase#queryClir()}, + * {@link ImsUtImplBase#queryClip()}, {@link ImsUtImplBase#queryColp()}, or + * {@link ImsUtImplBase#queryColr()} query for the transaction ID specified. If the query fails, + * {@link #onUtConfigurationQueryFailed(int, ImsReasonInfo)} should be called. + * @param id The ID associated with this UT configuration transaction from the framework. + * @param configuration A {@link Bundle} containing the result of querying the UT configuration. + * Must contain {@link #BUNDLE_KEY_CLIR} if it is a response to + * {@link ImsUtImplBase#queryClir()} or + * {@link #BUNDLE_KEY_SSINFO} if it is a response to + * {@link ImsUtImplBase#queryClip()}, {@link ImsUtImplBase#queryColp()}, or + * {@link ImsUtImplBase#queryColr()}. + * @deprecated Use {@link #onLineIdentificationSupplementaryServiceResponse(int, ImsSsInfo)} + * instead. + */ + @Deprecated + public void onUtConfigurationQueried(int id, Bundle configuration) { try { - mServiceInterface.utConfigurationQueried(null, id, ssInfo); + mServiceInterface.utConfigurationQueried(null, id, configuration); } catch (RemoteException e) { Log.w(LOG_TAG, "utConfigurationQueried: remote exception"); } } + /** + * Notify the framework of a UT configuration response to a {@link ImsUtImplBase#queryClir()}, + * {@link ImsUtImplBase#queryClip()}, {@link ImsUtImplBase#queryColp()}, or + * {@link ImsUtImplBase#queryColr()} query for the transaction ID specified. If the query fails, + * the framework should be notified via + * {@link #onUtConfigurationQueryFailed(int, ImsReasonInfo)}. + * @param id The ID associated with this UT configuration transaction from the framework. + * @param configuration An {@link ImsSsInfo} instance containing the configuration for the + * line identification supplementary service queried. + */ + public void onLineIdentificationSupplementaryServiceResponse(int id, + @NonNull ImsSsInfo configuration) { + try { + mServiceInterface.lineIdentificationSupplementaryServiceResponse(id, configuration); + } catch (RemoteException e) { + Log.w(LOG_TAG, "onLineIdentificationSupplementaryServicesResponse: remote exception"); + } + } + + /** + * Notify the Framework of the line identification query failure. + * @param id The ID associated with the UT query transaction. + * @param error The query failure reason. + */ public void onUtConfigurationQueryFailed(int id, ImsReasonInfo error) { try { mServiceInterface.utConfigurationQueryFailed(null, id, error); diff --git a/telephony/java/android/telephony/ims/compat/stub/ImsUtListenerImplBase.java b/telephony/java/android/telephony/ims/compat/stub/ImsUtListenerImplBase.java index 976c2be1a3fe..ae113f2f46c8 100644 --- a/telephony/java/android/telephony/ims/compat/stub/ImsUtListenerImplBase.java +++ b/telephony/java/android/telephony/ims/compat/stub/ImsUtListenerImplBase.java @@ -18,12 +18,11 @@ package android.telephony.ims.compat.stub; import android.os.Bundle; import android.os.RemoteException; - -import android.annotation.UnsupportedAppUsage; import android.telephony.ims.ImsCallForwardInfo; import android.telephony.ims.ImsReasonInfo; import android.telephony.ims.ImsSsData; import android.telephony.ims.ImsSsInfo; + import com.android.ims.internal.IImsUt; import com.android.ims.internal.IImsUtListener; @@ -65,6 +64,13 @@ public class ImsUtListenerImplBase extends IImsUtListener.Stub { } /** + * Notifies the result of a line identification supplementary service query. + */ + @Override + public void lineIdentificationSupplementaryServiceResponse(int id, ImsSsInfo config) { + } + + /** * Notifies the status of the call barring supplementary service. */ @Override diff --git a/telephony/java/com/android/ims/internal/IImsUtListener.aidl b/telephony/java/com/android/ims/internal/IImsUtListener.aidl index fcb9fb1f8773..9a12ceee5212 100644 --- a/telephony/java/com/android/ims/internal/IImsUtListener.aidl +++ b/telephony/java/com/android/ims/internal/IImsUtListener.aidl @@ -44,6 +44,7 @@ oneway interface IImsUtListener { @UnsupportedAppUsage void utConfigurationQueryFailed(in IImsUt ut, int id, in ImsReasonInfo error); + void lineIdentificationSupplementaryServiceResponse(int id, in ImsSsInfo config); /** * Notifies the status of the call barring supplementary service. */ |