diff --git a/core/api/system-current.txt b/core/api/system-current.txt index 2e2ee23ab3416..6c2847efe40f4 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -16029,6 +16029,7 @@ package android.telephony.ims.stub { method public void acknowledgeSms(int, @IntRange(from=0, to=65535) int, int, @NonNull byte[]); method public void acknowledgeSmsReport(int, @IntRange(from=0, to=65535) int, int); method public String getSmsFormat(); + method public void onMemoryAvailable(int); method public void onReady(); method @Deprecated public final void onSendSmsResult(int, @IntRange(from=0, to=65535) int, int, int) throws java.lang.RuntimeException; method public final void onSendSmsResultError(int, @IntRange(from=0, to=65535) int, int, int, int) throws java.lang.RuntimeException; diff --git a/telephony/java/android/telephony/ims/aidl/IImsMmTelFeature.aidl b/telephony/java/android/telephony/ims/aidl/IImsMmTelFeature.aidl index ea4480dc7958b..cf7e9e168f67b 100644 --- a/telephony/java/android/telephony/ims/aidl/IImsMmTelFeature.aidl +++ b/telephony/java/android/telephony/ims/aidl/IImsMmTelFeature.aidl @@ -64,6 +64,7 @@ interface IImsMmTelFeature { void setSmsListener(IImsSmsListener l); oneway void sendSms(in int token, int messageRef, String format, String smsc, boolean retry, in byte[] pdu); + oneway void onMemoryAvailable(int token); oneway void acknowledgeSms(int token, int messageRef, int result); oneway void acknowledgeSmsWithPdu(int token, int messageRef, int result, in byte[] pdu); oneway void acknowledgeSmsReport(int token, int messageRef, int result); diff --git a/telephony/java/android/telephony/ims/feature/MmTelFeature.java b/telephony/java/android/telephony/ims/feature/MmTelFeature.java index d776928965e57..4751978039a8b 100644 --- a/telephony/java/android/telephony/ims/feature/MmTelFeature.java +++ b/telephony/java/android/telephony/ims/feature/MmTelFeature.java @@ -268,6 +268,12 @@ public class MmTelFeature extends ImsFeature { .sendSms(token, messageRef, format, smsc, retry, pdu), "sendSms"); } + @Override + public void onMemoryAvailable(int token) { + executeMethodAsyncNoException(() -> MmTelFeature.this + .onMemoryAvailable(token), "onMemoryAvailable"); + } + @Override public void acknowledgeSms(int token, int messageRef, int result) { executeMethodAsyncNoException(() -> MmTelFeature.this @@ -1088,6 +1094,10 @@ public class MmTelFeature extends ImsFeature { getSmsImplementation().sendSms(token, messageRef, format, smsc, isRetry, pdu); } + private void onMemoryAvailable(int token) { + getSmsImplementation().onMemoryAvailable(token); + } + private void acknowledgeSms(int token, int messageRef, @ImsSmsImplBase.DeliverStatusResult int result) { getSmsImplementation().acknowledgeSms(token, messageRef, result); diff --git a/telephony/java/android/telephony/ims/stub/ImsSmsImplBase.java b/telephony/java/android/telephony/ims/stub/ImsSmsImplBase.java index 66833d18a945e..daab84eb077c4 100644 --- a/telephony/java/android/telephony/ims/stub/ImsSmsImplBase.java +++ b/telephony/java/android/telephony/ims/stub/ImsSmsImplBase.java @@ -170,6 +170,20 @@ public class ImsSmsImplBase { } } + /** + * This method will be triggered by the platform when memory becomes available to receive SMS + * after a memory full event. This method should be implemented by IMS providers to + * send RP-SMMA notification from SMS Relay Layer to server over IMS as per section 7.3.2 of + * TS 124.11. Once the RP-SMMA Notification is sent to the network. The network will deliver all + * the pending messages which failed due to Unavailability of Memory. + * + * @param token unique token generated in {@link ImsSmsDispatcher#onMemoryAvailable(void)} that + * should be used when triggering callbacks for this specific message. + */ + public void onMemoryAvailable(int token) { + // Base Implementation - Should be overridden + } + /** * This method will be triggered by the platform after * {@link #onSmsReceived(int, String, byte[])} has been called to deliver the result to the IMS