diff options
author | Taesu Lee <taesu82.lee@samsung.com> | 2019-08-30 14:44:06 +0900 |
---|---|---|
committer | Taesu Lee <taesu82.lee@samsung.com> | 2019-09-16 16:42:19 +0900 |
commit | 61e826d5763cd6fb88d450f731ddfcc32b6a8aed (patch) | |
tree | 13d6a05ff509d66700fb845e0eea5b3aa61133a3 /telephony/java/android/telephony/ims/stub/ImsSmsImplBase.java | |
parent | 763cb4638a1ed6124569b71307ca9a78373326a1 (diff) |
Add new onSmsStatusReportReceived() without message reference
IMS providers must generate unique token and don't need to parse the PDU
to get the message reference for new onSmsStatusReportReceived() API.
The platform will extract the message reference from the PDU and return
it to the IMS providers via acknowledgeSmsReport(). And @Deprecated tag
is added on existing onSmsStatusReportReceived() API.
This CL includes some fixing doc bug and description for APIs also.
Test: atest FrameworksTelephonyTests:ImsSmsDispatcherTest
Change-Id: Ib788e291f2e70c3e062319e17e2c9efe33f31164
Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Diffstat (limited to 'telephony/java/android/telephony/ims/stub/ImsSmsImplBase.java')
-rw-r--r-- | telephony/java/android/telephony/ims/stub/ImsSmsImplBase.java | 75 |
1 files changed, 63 insertions, 12 deletions
diff --git a/telephony/java/android/telephony/ims/stub/ImsSmsImplBase.java b/telephony/java/android/telephony/ims/stub/ImsSmsImplBase.java index 852c8e0618c8..2e4bfb3149be 100644 --- a/telephony/java/android/telephony/ims/stub/ImsSmsImplBase.java +++ b/telephony/java/android/telephony/ims/stub/ImsSmsImplBase.java @@ -147,7 +147,7 @@ public class ImsSmsImplBase { * {@link SmsMessage#FORMAT_3GPP2}. * @param smsc the Short Message Service Center address. * @param isRetry whether it is a retry of an already attempted message or not. - * @param pdu PDUs representing the contents of the message. + * @param pdu PDU representing the contents of the message. */ public void sendSms(int token, int messageRef, String format, String smsc, boolean isRetry, byte[] pdu) { @@ -166,27 +166,29 @@ public class ImsSmsImplBase { * provider. * * @param token token provided in {@link #onSmsReceived(int, String, byte[])} + * @param messageRef the message reference * @param result result of delivering the message. Valid values are: * {@link #DELIVER_STATUS_OK}, * {@link #DELIVER_STATUS_ERROR_GENERIC}, * {@link #DELIVER_STATUS_ERROR_NO_MEMORY}, * {@link #DELIVER_STATUS_ERROR_REQUEST_NOT_SUPPORTED} - * @param messageRef the message reference */ - public void acknowledgeSms(int token, @DeliverStatusResult int messageRef, int result) { + public void acknowledgeSms(int token, int messageRef, @DeliverStatusResult int result) { Log.e(LOG_TAG, "acknowledgeSms() not implemented."); } /** * This method will be triggered by the platform after - * {@link #onSmsStatusReportReceived(int, int, String, byte[])} has been called to provide the + * {@link #onSmsStatusReportReceived(int, int, String, byte[])} or + * {@link #onSmsStatusReportReceived(int, String, byte[])} has been called to provide the * result to the IMS provider. * - * @param token token provided in {@link #sendSms(int, int, String, String, boolean, byte[])} + * @param token token provided in {@link #onSmsStatusReportReceived(int, int, String, byte[])} + * or {@link #onSmsStatusReportReceived(int, String, byte[])} + * @param messageRef the message reference * @param result result of delivering the message. Valid values are: * {@link #STATUS_REPORT_STATUS_OK}, * {@link #STATUS_REPORT_STATUS_ERROR} - * @param messageRef the message reference */ public void acknowledgeSmsReport(int token, int messageRef, @StatusReportResult int result) { Log.e(LOG_TAG, "acknowledgeSmsReport() not implemented."); @@ -204,7 +206,7 @@ public class ImsSmsImplBase { * callbacks for this message. * @param format the format of the message. Valid values are {@link SmsMessage#FORMAT_3GPP} and * {@link SmsMessage#FORMAT_3GPP2}. - * @param pdu PDUs representing the contents of the message. + * @param pdu PDU representing the contents of the message. * @throws RuntimeException if called before {@link #onReady()} is triggered. */ public final void onSmsReceived(int token, String format, byte[] pdu) throws RuntimeException { @@ -285,23 +287,32 @@ public class ImsSmsImplBase { } /** - * Sets the status report of the sent message. + * This method should be triggered by the IMS providers when the status report of the sent + * message is received. The platform will handle the report and notify the IMS provider of the + * result by calling {@link #acknowledgeSmsReport(int, int, int)}. * + * This method must not be called before {@link #onReady()} is called or the call will fail. If + * the platform is not available, {@link #acknowledgeSmsReport(int, int, int)} will be called + * with the {@link #STATUS_REPORT_STATUS_ERROR} result code. * @param token token provided in {@link #sendSms(int, int, String, String, boolean, byte[])} * @param messageRef the message reference. * @param format the format of the message. Valid values are {@link SmsMessage#FORMAT_3GPP} and - * {@link SmsMessage#FORMAT_3GPP2}. - * @param pdu PDUs representing the content of the status report. + * {@link SmsMessage#FORMAT_3GPP2}. + * @param pdu PDU representing the content of the status report. * @throws RuntimeException if called before {@link #onReady()} is triggered + * + * @deprecated Use {@link #onSmsStatusReportReceived(int, String, byte[])} instead without the + * message reference. */ + @Deprecated public final void onSmsStatusReportReceived(int token, int messageRef, String format, - byte[] pdu) throws RuntimeException{ + byte[] pdu) throws RuntimeException { synchronized (mLock) { if (mListener == null) { throw new RuntimeException("Feature not ready."); } try { - mListener.onSmsStatusReportReceived(token, messageRef, format, pdu); + mListener.onSmsStatusReportReceived(token, format, pdu); } catch (RemoteException e) { Log.e(LOG_TAG, "Can not process sms status report: " + e.getMessage()); acknowledgeSmsReport(token, messageRef, STATUS_REPORT_STATUS_ERROR); @@ -310,6 +321,46 @@ public class ImsSmsImplBase { } /** + * This method should be triggered by the IMS providers when the status report of the sent + * message is received. The platform will handle the report and notify the IMS provider of the + * result by calling {@link #acknowledgeSmsReport(int, int, int)}. + * + * This method must not be called before {@link #onReady()} is called or the call will fail. If + * the platform is not available, {@link #acknowledgeSmsReport(int, int, int)} will be called + * with the {@link #STATUS_REPORT_STATUS_ERROR} result code. + * @param token unique token generated by IMS providers that the platform will use to trigger + * callbacks for this message. + * @param format the format of the message. Valid values are {@link SmsMessage#FORMAT_3GPP} and + * {@link SmsMessage#FORMAT_3GPP2}. + * @param pdu PDU representing the content of the status report. + * @throws RuntimeException if called before {@link #onReady()} is triggered + */ + public final void onSmsStatusReportReceived(int token, String format, byte[] pdu) + throws RuntimeException { + synchronized (mLock) { + if (mListener == null) { + throw new RuntimeException("Feature not ready."); + } + try { + mListener.onSmsStatusReportReceived(token, format, pdu); + } catch (RemoteException e) { + Log.e(LOG_TAG, "Can not process sms status report: " + e.getMessage()); + SmsMessage message = SmsMessage.createFromPdu(pdu, format); + if (message != null && message.mWrappedSmsMessage != null) { + acknowledgeSmsReport( + token, + message.mWrappedSmsMessage.mMessageRef, + STATUS_REPORT_STATUS_ERROR); + } else { + Log.w(LOG_TAG, + "onSmsStatusReportReceivedWithoutMessageRef: Invalid pdu entered."); + acknowledgeSmsReport(token, 0, STATUS_REPORT_STATUS_ERROR); + } + } + } + } + + /** * Returns the SMS format. Default is {@link SmsMessage#FORMAT_3GPP} unless overridden by IMS * Provider. * |