From b9ef00ea2f66fa0287e5ac921f296c21ab57717f Mon Sep 17 00:00:00 2001 From: Sang-Jun Park Date: Fri, 4 Feb 2011 06:24:25 +0900 Subject: Fix the Multi-page SMS sending error to several receipents Change-Id: Iefde94b638413e3c1761f17c3065b20a044e5958 Signed-off-by: Sang-Jun Park --- .../android/internal/telephony/SMSDispatcher.java | 24 ++++++++++++++++++++-- .../internal/telephony/gsm/GsmSMSDispatcher.java | 4 ++++ 2 files changed, 26 insertions(+), 2 deletions(-) mode change 100644 => 100755 telephony/java/com/android/internal/telephony/SMSDispatcher.java diff --git a/telephony/java/com/android/internal/telephony/SMSDispatcher.java b/telephony/java/com/android/internal/telephony/SMSDispatcher.java old mode 100644 new mode 100755 index 917e1d823a8a..0b12b3422272 --- 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 -- cgit v1.2.3-59-g8ed1b