diff options
author | Sang-Jun Park <sj2202.park@samsung.com> | 2011-01-31 18:44:37 +0900 |
---|---|---|
committer | Jean-Baptiste Queru <jbq@google.com> | 2011-02-01 10:05:28 -0800 |
commit | c5996b9969b241dfe647c7de4d7995c6e848d1db (patch) | |
tree | 2287d2bb4c725fd69c30e2a573cab66516add8cc /telephony/java | |
parent | 65aef1517b070e695e00e9603bf79c166dc4913f (diff) | |
download | frameworks_base-c5996b9969b241dfe647c7de4d7995c6e848d1db.zip frameworks_base-c5996b9969b241dfe647c7de4d7995c6e848d1db.tar.gz frameworks_base-c5996b9969b241dfe647c7de4d7995c6e848d1db.tar.bz2 |
Fix delivery report error with PENDING status in SMS
1. According to TS 23.040, TP-Status values is changed properly.
2. When processing Status Report, it should be checked whether tpStatus is PENDING or FAILED.
Change-Id: I91c315cfb363f3e4b936c6b6b1a01083687a580f
Diffstat (limited to 'telephony/java')
-rwxr-xr-x[-rw-r--r--] | telephony/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java b/telephony/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java index 3079a64..49fa5da 100644..100755 --- a/telephony/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java @@ -22,6 +22,7 @@ import android.app.PendingIntent.CanceledException; import android.content.Intent; import android.os.AsyncResult; import android.os.Message; +import android.provider.Telephony.Sms; import android.provider.Telephony.Sms.Intents; import android.telephony.ServiceState; import android.util.Config; @@ -60,13 +61,17 @@ final class GsmSMSDispatcher extends SMSDispatcher { String pduString = (String) ar.result; SmsMessage sms = SmsMessage.newFromCDS(pduString); + int tpStatus = sms.getStatus(); + if (sms != null) { int messageRef = sms.messageRef; for (int i = 0, count = deliveryPendingList.size(); i < count; i++) { SmsTracker tracker = deliveryPendingList.get(i); if (tracker.mMessageRef == messageRef) { // Found it. Remove from list and broadcast. - deliveryPendingList.remove(i); + if(tpStatus >= Sms.STATUS_FAILED || tpStatus < Sms.STATUS_PENDING ) { + deliveryPendingList.remove(i); + } PendingIntent intent = tracker.mDeliveryIntent; Intent fillIn = new Intent(); fillIn.putExtra("pdu", IccUtils.hexStringToBytes(pduString)); |