summaryrefslogtreecommitdiffstats
path: root/telephony/java
diff options
context:
space:
mode:
authorTammo Spalink <tammo@google.com>2009-07-27 15:45:38 +0800
committerTammo Spalink <tammo@google.com>2009-07-27 16:20:31 +0800
commit5e5b8c45dbb87be5468821ed298747ab065d73a6 (patch)
tree54df64d4a85f96f830cdc721d5d9045aa49aea6b /telephony/java
parent0fdedd00c510e62223e47d0c5e605b2350d2d304 (diff)
downloadframeworks_base-5e5b8c45dbb87be5468821ed298747ab065d73a6.zip
frameworks_base-5e5b8c45dbb87be5468821ed298747ab065d73a6.tar.gz
frameworks_base-5e5b8c45dbb87be5468821ed298747ab065d73a6.tar.bz2
Fix swapped gsm/cdma function dispatch, and 7bit text fragmentation.
Diffstat (limited to 'telephony/java')
-rw-r--r--telephony/java/android/telephony/SmsMessage.java15
1 files changed, 6 insertions, 9 deletions
diff --git a/telephony/java/android/telephony/SmsMessage.java b/telephony/java/android/telephony/SmsMessage.java
index 775b034..fc491d7 100644
--- a/telephony/java/android/telephony/SmsMessage.java
+++ b/telephony/java/android/telephony/SmsMessage.java
@@ -278,8 +278,8 @@ public class SmsMessage {
public static int[] calculateLength(CharSequence msgBody, boolean use7bitOnly) {
int activePhone = TelephonyManager.getDefault().getPhoneType();
TextEncodingDetails ted = (PHONE_TYPE_CDMA == activePhone) ?
- com.android.internal.telephony.gsm.SmsMessage.calculateLength(msgBody, use7bitOnly) :
- com.android.internal.telephony.cdma.SmsMessage.calculateLength(msgBody, use7bitOnly);
+ com.android.internal.telephony.cdma.SmsMessage.calculateLength(msgBody, use7bitOnly) :
+ com.android.internal.telephony.gsm.SmsMessage.calculateLength(msgBody, use7bitOnly);
int ret[] = new int[4];
ret[0] = ted.msgCount;
ret[1] = ted.codeUnitCount;
@@ -299,8 +299,8 @@ public class SmsMessage {
public static ArrayList<String> fragmentText(String text) {
int activePhone = TelephonyManager.getDefault().getPhoneType();
TextEncodingDetails ted = (PHONE_TYPE_CDMA == activePhone) ?
- com.android.internal.telephony.gsm.SmsMessage.calculateLength(text, false) :
- com.android.internal.telephony.cdma.SmsMessage.calculateLength(text, false);
+ com.android.internal.telephony.cdma.SmsMessage.calculateLength(text, false) :
+ com.android.internal.telephony.gsm.SmsMessage.calculateLength(text, false);
// TODO(cleanup): The code here could be rolled into the logic
// below cleanly if these MAX_* constants were defined more
@@ -321,11 +321,8 @@ public class SmsMessage {
while (pos < textLen) {
int nextPos = 0; // Counts code units.
if (ted.codeUnitSize == ENCODING_7BIT) {
- if (PHONE_TYPE_CDMA == activePhone) {
- nextPos = pos + Math.min(limit, textLen - pos);
- } else {
- nextPos = GsmAlphabet.findGsmSeptetLimitIndex(text, pos, limit);
- }
+ // For multi-segment messages, CDMA 7bit equals GSM 7bit encoding (EMS mode).
+ nextPos = GsmAlphabet.findGsmSeptetLimitIndex(text, pos, limit);
} else { // Assume unicode.
nextPos = pos + Math.min(limit / 2, textLen - pos);
}