summaryrefslogtreecommitdiffstats
path: root/telephony
diff options
context:
space:
mode:
authorjsh <jsh@google.com>2009-11-05 17:00:15 -0800
committerjsh <jsh@google.com>2009-11-05 23:39:21 -0800
commit3e5c3a6db4c8ad4842ee1f6a2cdb04f6e107db57 (patch)
treea1482fba148439a218cf90e043f192961b74d591 /telephony
parent584bce31b62cdf3efd8a9eb40442c4cc612ce1e6 (diff)
downloadframeworks_base-3e5c3a6db4c8ad4842ee1f6a2cdb04f6e107db57.zip
frameworks_base-3e5c3a6db4c8ad4842ee1f6a2cdb04f6e107db57.tar.gz
frameworks_base-3e5c3a6db4c8ad4842ee1f6a2cdb04f6e107db57.tar.bz2
Fix some SMS encode issues.
1. Spanish SMS 71-160 chars not sent. This was because calculateLength allowed for single-segment EMS encoding, while encodeUserDataPayload did not. For now, change calculateLength to match encodeUserDataPayload (ie, fallback to UTF16 in this case). (b/2224849) 2. Unicode value of N w/tilde was incorrect. (b/2224849) 3. Add '\' and '/' to the list of valid separators in CDMA SMS numeric addresses. (b/2236527)
Diffstat (limited to 'telephony')
-rw-r--r--telephony/java/com/android/internal/telephony/GsmAlphabet.java2
-rw-r--r--telephony/java/com/android/internal/telephony/cdma/sms/BearerData.java19
-rw-r--r--telephony/java/com/android/internal/telephony/cdma/sms/CdmaSmsAddress.java2
3 files changed, 21 insertions, 2 deletions
diff --git a/telephony/java/com/android/internal/telephony/GsmAlphabet.java b/telephony/java/com/android/internal/telephony/GsmAlphabet.java
index 461b694..ebdd220 100644
--- a/telephony/java/com/android/internal/telephony/GsmAlphabet.java
+++ b/telephony/java/com/android/internal/telephony/GsmAlphabet.java
@@ -658,7 +658,7 @@ public class GsmAlphabet {
charToGsm.put('Z', i++);
charToGsm.put('\u00c4', i++);
charToGsm.put('\u00d6', i++);
- charToGsm.put('\u0147', i++);
+ charToGsm.put('\u00d1', i++);
charToGsm.put('\u00dc', i++);
charToGsm.put('\u00a7', i++);
diff --git a/telephony/java/com/android/internal/telephony/cdma/sms/BearerData.java b/telephony/java/com/android/internal/telephony/cdma/sms/BearerData.java
index 721729d..c7032ac 100644
--- a/telephony/java/com/android/internal/telephony/cdma/sms/BearerData.java
+++ b/telephony/java/com/android/internal/telephony/cdma/sms/BearerData.java
@@ -16,6 +16,10 @@
package com.android.internal.telephony.cdma.sms;
+import static android.telephony.SmsMessage.ENCODING_16BIT;
+import static android.telephony.SmsMessage.MAX_USER_DATA_BYTES;
+import static android.telephony.SmsMessage.MAX_USER_DATA_BYTES_WITH_HEADER;
+
import android.util.Log;
import android.util.SparseIntArray;
@@ -417,6 +421,21 @@ public final class BearerData {
} else {
ted = com.android.internal.telephony.gsm.SmsMessage.calculateLength(
msg, force7BitEncoding);
+ if (ted.msgCount == 1 && ted.codeUnitSize == SmsMessage.ENCODING_7BIT) {
+ // We don't support single-segment EMS, so calculate for 16-bit
+ // TODO: Consider supporting single-segment EMS
+ ted.codeUnitCount = msg.length();
+ int octets = ted.codeUnitCount * 2;
+ if (octets > MAX_USER_DATA_BYTES) {
+ ted.msgCount = (octets / MAX_USER_DATA_BYTES_WITH_HEADER) + 1;
+ ted.codeUnitsRemaining = (MAX_USER_DATA_BYTES_WITH_HEADER
+ - (octets % MAX_USER_DATA_BYTES_WITH_HEADER))/2;
+ } else {
+ ted.msgCount = 1;
+ ted.codeUnitsRemaining = (MAX_USER_DATA_BYTES - octets)/2;
+ }
+ ted.codeUnitSize = ENCODING_16BIT;
+ }
}
return ted;
}
diff --git a/telephony/java/com/android/internal/telephony/cdma/sms/CdmaSmsAddress.java b/telephony/java/com/android/internal/telephony/cdma/sms/CdmaSmsAddress.java
index f49b502..5f2e561 100644
--- a/telephony/java/com/android/internal/telephony/cdma/sms/CdmaSmsAddress.java
+++ b/telephony/java/com/android/internal/telephony/cdma/sms/CdmaSmsAddress.java
@@ -135,7 +135,7 @@ public class CdmaSmsAddress extends SmsAddress {
};
private static final char[] numericCharsSugar = {
- '(', ')', ' ', '-', '+', '.'
+ '(', ')', ' ', '-', '+', '.', '/', '\\'
};
private static final SparseBooleanArray numericCharDialableMap = new SparseBooleanArray (