diff options
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 461b69454215..ebdd2207db6f 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 721729d9bf27..c7032aca0a71 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 f49b5029189b..5f2e561b687f 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 ( |