Merge "Parse SMS locally upon error to get message ref" into pi-dev

This commit is contained in:
Brad Ebinger
2018-03-23 23:19:26 +00:00
committed by Android (Google) Code Review
2 changed files with 15 additions and 2 deletions

View File

@@ -207,7 +207,10 @@ public class SmsMessage {
*/
public static SmsMessage createFromPdu(byte[] pdu, String format) {
SmsMessageBase wrappedMessage;
if (pdu == null) {
Rlog.i(LOG_TAG, "createFromPdu(): pdu is null");
return null;
}
if (SmsConstants.FORMAT_3GPP2.equals(format)) {
wrappedMessage = com.android.internal.telephony.cdma.SmsMessage.createFromPdu(pdu);
} else if (SmsConstants.FORMAT_3GPP.equals(format)) {

View File

@@ -197,6 +197,9 @@ public class ImsSmsImplBase {
* platform will deliver the message to the messages database and notify the IMS provider of the
* result by calling {@link #acknowledgeSms(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 #acknowledgeSms(int, int, int)} will be called with the
* {@link #DELIVER_STATUS_ERROR_GENERIC} 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
@@ -213,7 +216,14 @@ public class ImsSmsImplBase {
mListener.onSmsReceived(token, format, pdu);
} catch (RemoteException e) {
Log.e(LOG_TAG, "Can not deliver sms: " + e.getMessage());
acknowledgeSms(token, 0, DELIVER_STATUS_ERROR_GENERIC);
SmsMessage message = SmsMessage.createFromPdu(pdu, format);
if (message != null && message.mWrappedSmsMessage != null) {
acknowledgeSms(token, message.mWrappedSmsMessage.mMessageRef,
DELIVER_STATUS_ERROR_GENERIC);
} else {
Log.w(LOG_TAG, "onSmsReceived: Invalid pdu entered.");
acknowledgeSms(token, 0, DELIVER_STATUS_ERROR_GENERIC);
}
}
}
}