diff options
5 files changed, 28 insertions, 19 deletions
diff --git a/telephony/java/android/telephony/ims/DelegateRequest.java b/telephony/java/android/telephony/ims/DelegateRequest.java index f384901d58bd..73d0840177dd 100644 --- a/telephony/java/android/telephony/ims/DelegateRequest.java +++ b/telephony/java/android/telephony/ims/DelegateRequest.java @@ -98,4 +98,9 @@ public final class DelegateRequest implements Parcelable { public int hashCode() { return Objects.hash(mFeatureTags); } + + @Override + public String toString() { + return "DelegateRequest{mFeatureTags=" + mFeatureTags + '}'; + } } diff --git a/telephony/java/android/telephony/ims/SipDelegateManager.java b/telephony/java/android/telephony/ims/SipDelegateManager.java index 337b7d49323d..190a792b5a9a 100644 --- a/telephony/java/android/telephony/ims/SipDelegateManager.java +++ b/telephony/java/android/telephony/ims/SipDelegateManager.java @@ -236,17 +236,17 @@ public class SipDelegateManager { public static final int SIP_DELEGATE_DESTROY_REASON_REQUESTED_BY_APP = 2; /** - * The SipDelegate has closed because the IMS service does not support the creation of - * SipDelegates. + * The SipDelegate has been closed due to the user disabling RCS. * @hide */ - public static final int SIP_DELEGATE_DESTROY_REASON_SERVICE_NOT_SUPPORTED = 3; + public static final int SIP_DELEGATE_DESTROY_REASON_USER_DISABLED_RCS = 3; /** - * The SipDelegate has been closed due to the user disabling RCS. + * The SipDelegate has been closed due to the subscription associated with this delegate being + * torn down. * @hide */ - public static final int SIP_DELEGATE_DESTROY_REASON_USER_DISABLED_RCS = 4; + public static final int SIP_DELEGATE_DESTROY_REASON_SUBSCRIPTION_TORN_DOWN = 4; /** @hide */ @Retention(RetentionPolicy.SOURCE) @@ -254,8 +254,8 @@ public class SipDelegateManager { SIP_DELEGATE_DESTROY_REASON_UNKNOWN, SIP_DELEGATE_DESTROY_REASON_SERVICE_DEAD, SIP_DELEGATE_DESTROY_REASON_REQUESTED_BY_APP, - SIP_DELEGATE_DESTROY_REASON_SERVICE_NOT_SUPPORTED, - SIP_DELEGATE_DESTROY_REASON_USER_DISABLED_RCS + SIP_DELEGATE_DESTROY_REASON_USER_DISABLED_RCS, + SIP_DELEGATE_DESTROY_REASON_SUBSCRIPTION_TORN_DOWN }) public @interface SipDelegateDestroyReason {} @@ -316,6 +316,9 @@ public class SipDelegateManager { * always be available to handle incoming messages. One mechanism that can be used for this is * the {@link android.service.carrier.CarrierMessagingClientService}, which the framework keeps * a persistent binding to when the app is the default SMS application. + * <p> + * Note: the ability to create SipDelegates is only available applications running as the + * primary user. * @param request The parameters that are associated with the SipDelegate creation request that * will be used to create the SipDelegate connection. * @param executor The executor that will be used to call the callbacks associated with this @@ -346,8 +349,8 @@ public class SipDelegateManager { throw new ImsException("Telephony server is down", ImsException.CODE_ERROR_SERVICE_UNAVAILABLE); } - controller.createSipDelegate(mSubId, request, wrapper.getStateCallbackBinder(), - wrapper.getMessageCallbackBinder()); + controller.createSipDelegate(mSubId, request, mContext.getOpPackageName(), + wrapper.getStateCallbackBinder(), wrapper.getMessageCallbackBinder()); } catch (ServiceSpecificException e) { throw new ImsException(e.getMessage(), e.errorCode); } catch (RemoteException e) { diff --git a/telephony/java/android/telephony/ims/aidl/IImsRcsController.aidl b/telephony/java/android/telephony/ims/aidl/IImsRcsController.aidl index f218e35a5a9b..c6d9a8629556 100644 --- a/telephony/java/android/telephony/ims/aidl/IImsRcsController.aidl +++ b/telephony/java/android/telephony/ims/aidl/IImsRcsController.aidl @@ -63,7 +63,7 @@ interface IImsRcsController { // SipDelegateManager boolean isSipDelegateSupported(int subId); - void createSipDelegate(int subId, in DelegateRequest request, + void createSipDelegate(int subId, in DelegateRequest request, String packageName, ISipDelegateConnectionStateCallback delegateState, ISipDelegateMessageCallback delegateMessage); void destroySipDelegate(int subId, ISipDelegate connection, int reason); diff --git a/telephony/java/android/telephony/ims/aidl/ISipTransport.aidl b/telephony/java/android/telephony/ims/aidl/ISipTransport.aidl index cd888391c584..3438587b7348 100644 --- a/telephony/java/android/telephony/ims/aidl/ISipTransport.aidl +++ b/telephony/java/android/telephony/ims/aidl/ISipTransport.aidl @@ -26,7 +26,7 @@ import android.telephony.ims.aidl.ISipDelegateStateCallback; * {@hide} */ oneway interface ISipTransport { - void createSipDelegate(in DelegateRequest request, ISipDelegateStateCallback dc, + void createSipDelegate(int subId, in DelegateRequest request, ISipDelegateStateCallback dc, ISipDelegateMessageCallback mc); void destroySipDelegate(ISipDelegate delegate, int reason); } diff --git a/telephony/java/android/telephony/ims/stub/SipTransportImplBase.java b/telephony/java/android/telephony/ims/stub/SipTransportImplBase.java index b48f6317e413..93d438cf7f4d 100644 --- a/telephony/java/android/telephony/ims/stub/SipTransportImplBase.java +++ b/telephony/java/android/telephony/ims/stub/SipTransportImplBase.java @@ -58,11 +58,11 @@ public class SipTransportImplBase { private final ISipTransport.Stub mSipTransportImpl = new ISipTransport.Stub() { @Override - public void createSipDelegate(DelegateRequest request, ISipDelegateStateCallback dc, - ISipDelegateMessageCallback mc) { + public void createSipDelegate(int subId, DelegateRequest request, + ISipDelegateStateCallback dc, ISipDelegateMessageCallback mc) { final long token = Binder.clearCallingIdentity(); try { - mBinderExecutor.execute(() -> createSipDelegateInternal(request, dc, mc)); + mBinderExecutor.execute(() -> createSipDelegateInternal(subId, request, dc, mc)); } finally { Binder.restoreCallingIdentity(token); } @@ -105,6 +105,7 @@ public class SipTransportImplBase { * This method will be called on the Executor specified in * {@link SipTransportImplBase#SipTransportImplBase(Executor)}. * + * @param subscriptionId The subscription ID associated with the requested {@link SipDelegate}. * @param request A SIP delegate request containing the parameters that the remote RCS * application wishes to use. * @param dc A callback back to the remote application to be used to communicate state callbacks @@ -113,9 +114,9 @@ public class SipTransportImplBase { * remote application and acknowledge the sending of outgoing SIP messages. * @hide */ - public void createSipDelegate(@NonNull DelegateRequest request, + public void createSipDelegate(int subscriptionId, @NonNull DelegateRequest request, @NonNull DelegateStateCallback dc, @NonNull DelegateMessageCallback mc) { - throw new UnsupportedOperationException("destroySipDelegate not implemented!"); + throw new UnsupportedOperationException("createSipDelegate not implemented!"); } /** @@ -136,11 +137,11 @@ public class SipTransportImplBase { throw new UnsupportedOperationException("destroySipDelegate not implemented!"); } - private void createSipDelegateInternal(DelegateRequest r, ISipDelegateStateCallback cb, - ISipDelegateMessageCallback mc) { + private void createSipDelegateInternal(int subId, DelegateRequest r, + ISipDelegateStateCallback cb, ISipDelegateMessageCallback mc) { SipDelegateAidlWrapper wrapper = new SipDelegateAidlWrapper(mBinderExecutor, cb, mc); mDelegates.add(wrapper); - createSipDelegate(r, wrapper, wrapper); + createSipDelegate(subId, r, wrapper, wrapper); } private void destroySipDelegateInternal(ISipDelegate d, int reason) { |