summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSang-Jun Park <sj2202.park@samsung.com>2011-01-31 18:44:37 +0900
committerJean-Baptiste Queru <jbq@google.com>2011-02-01 10:05:28 -0800
commitc5996b9969b241dfe647c7de4d7995c6e848d1db (patch)
tree2287d2bb4c725fd69c30e2a573cab66516add8cc
parent65aef1517b070e695e00e9603bf79c166dc4913f (diff)
downloadbase-c5996b9969b241dfe647c7de4d7995c6e848d1db.tar.gz
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
-rwxr-xr-x[-rw-r--r--]core/java/android/provider/Telephony.java4
-rwxr-xr-x[-rw-r--r--]telephony/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java7
2 files changed, 8 insertions, 3 deletions
diff --git a/core/java/android/provider/Telephony.java b/core/java/android/provider/Telephony.java
index 6d8bd9ba573c..940bd2457d5a 100644..100755
--- a/core/java/android/provider/Telephony.java
+++ b/core/java/android/provider/Telephony.java
@@ -114,8 +114,8 @@ public final class Telephony {
public static final int STATUS_NONE = -1;
public static final int STATUS_COMPLETE = 0;
- public static final int STATUS_PENDING = 64;
- public static final int STATUS_FAILED = 128;
+ public static final int STATUS_PENDING = 32;
+ public static final int STATUS_FAILED = 64;
/**
* The subject of the message, if present
diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java b/telephony/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java
index 3079a64086c7..49fa5daa05f3 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));