summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Baptiste Queru <jbq@google.com>2011-02-03 14:02:59 -0800
committerAndroid Code Review <code-review@android.com>2011-02-03 14:02:59 -0800
commit4ddd99090e37edd3e6b7c57ddd065fa4e7007bf2 (patch)
tree92028c29b0a447a487dbc7de7f184378ff5e6676
parent2703b84caabe7b4fb7f6c08bf7463a89b0a3169c (diff)
parentb9ef00ea2f66fa0287e5ac921f296c21ab57717f (diff)
downloadbase-4ddd99090e37edd3e6b7c57ddd065fa4e7007bf2.tar.gz
Merge "Fix the Multi-page SMS sending error to several receipents" into gingerbread
-rwxr-xr-x[-rw-r--r--]telephony/java/com/android/internal/telephony/SMSDispatcher.java24
-rwxr-xr-xtelephony/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java4
2 files changed, 26 insertions, 2 deletions
diff --git a/telephony/java/com/android/internal/telephony/SMSDispatcher.java b/telephony/java/com/android/internal/telephony/SMSDispatcher.java
index 917e1d823a8a..0b12b3422272 100644..100755
--- a/telephony/java/com/android/internal/telephony/SMSDispatcher.java
+++ b/telephony/java/com/android/internal/telephony/SMSDispatcher.java
@@ -65,6 +65,7 @@ import static android.telephony.SmsManager.RESULT_ERROR_FDN_CHECK_FAILURE;
public abstract class SMSDispatcher extends Handler {
private static final String TAG = "SMS";
+ private static final String SEND_NEXT_MSG_EXTRA = "SendNextMsg";
/** Default checking period for SMS sent without user permit */
private static final int DEFAULT_SMS_CHECK_PERIOD = 3600000;
@@ -153,6 +154,8 @@ public abstract class SMSDispatcher extends Handler {
protected boolean mStorageAvailable = true;
protected boolean mReportMemoryStatusPending = false;
+ protected static int mRemainingMessages = -1;
+
protected static int getNextConcatenatedRef() {
sConcatenatedRef += 1;
return sConcatenatedRef;
@@ -463,7 +466,17 @@ public abstract class SMSDispatcher extends Handler {
if (sentIntent != null) {
try {
- sentIntent.send(Activity.RESULT_OK);
+ if (mRemainingMessages > -1) {
+ mRemainingMessages--;
+ }
+
+ if (mRemainingMessages == 0) {
+ Intent sendNext = new Intent();
+ sendNext.putExtra(SEND_NEXT_MSG_EXTRA, true);
+ sentIntent.send(mContext, Activity.RESULT_OK, sendNext);
+ } else {
+ sentIntent.send(Activity.RESULT_OK);
+ }
} catch (CanceledException ex) {}
}
} else {
@@ -502,8 +515,15 @@ public abstract class SMSDispatcher extends Handler {
if (ar.result != null) {
fillIn.putExtra("errorCode", ((SmsResponse)ar.result).errorCode);
}
- tracker.mSentIntent.send(mContext, error, fillIn);
+ if (mRemainingMessages > -1) {
+ mRemainingMessages--;
+ }
+
+ if (mRemainingMessages == 0) {
+ fillIn.putExtra(SEND_NEXT_MSG_EXTRA, true);
+ }
+ tracker.mSentIntent.send(mContext, error, fillIn);
} catch (CanceledException ex) {}
}
}
diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java b/telephony/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java
index 49fa5daa05f3..e7b6c37284ee 100755
--- a/telephony/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GsmSMSDispatcher.java
@@ -180,6 +180,8 @@ final class GsmSMSDispatcher extends SMSDispatcher {
int msgCount = parts.size();
int encoding = android.telephony.SmsMessage.ENCODING_UNKNOWN;
+ mRemainingMessages = msgCount;
+
for (int i = 0; i < msgCount; i++) {
TextEncodingDetails details = SmsMessage.calculateLength(parts.get(i), false);
if (encoding != details.codeUnitSize
@@ -269,6 +271,8 @@ final class GsmSMSDispatcher extends SMSDispatcher {
int msgCount = parts.size();
int encoding = android.telephony.SmsMessage.ENCODING_UNKNOWN;
+ mRemainingMessages = msgCount;
+
for (int i = 0; i < msgCount; i++) {
TextEncodingDetails details = SmsMessage.calculateLength(parts.get(i), false);
if (encoding != details.codeUnitSize