summaryrefslogtreecommitdiffstats
path: root/telephony
diff options
context:
space:
mode:
authorJake Hamby <jhamby@google.com>2012-12-06 13:11:34 -0800
committerJake Hamby <jhamby@google.com>2012-12-06 14:53:44 -0800
commit37a2163267d61b29aafb6dabba6102fc43ed2047 (patch)
tree52091ba7522650666b6f828d485ac2393e5c0172 /telephony
parent683028ca0dab7b5cf7afff4501c2372350231bae (diff)
downloadframeworks_base-37a2163267d61b29aafb6dabba6102fc43ed2047.zip
frameworks_base-37a2163267d61b29aafb6dabba6102fc43ed2047.tar.gz
frameworks_base-37a2163267d61b29aafb6dabba6102fc43ed2047.tar.bz2
Enable Turkish language encoding for Turkish SIM cards.
Enable Turkish language encoding for SMS messages. Adds an MCC-specific config.xml override to enable the Turkish language tables for Turkish SIM cards. Also modifies GsmAlphabet.java to load the config.xml values before use, so the SMSDispatcher will get the current values instead of caching the boot-time values before the MCC is loaded. Bug: 7422368 Change-Id: I57cd5fcc1d04a2d0cba3e8b9022078679cf5d4c1
Diffstat (limited to 'telephony')
-rw-r--r--telephony/java/com/android/internal/telephony/GsmAlphabet.java39
1 files changed, 28 insertions, 11 deletions
diff --git a/telephony/java/com/android/internal/telephony/GsmAlphabet.java b/telephony/java/com/android/internal/telephony/GsmAlphabet.java
index 04b1220..ba14ea7 100644
--- a/telephony/java/com/android/internal/telephony/GsmAlphabet.java
+++ b/telephony/java/com/android/internal/telephony/GsmAlphabet.java
@@ -803,6 +803,10 @@ public class GsmAlphabet {
*/
public static TextEncodingDetails
countGsmSeptets(CharSequence s, boolean use7bitOnly) {
+ // Load enabled language tables from config.xml, including any MCC overlays
+ if (!sDisableCountryEncodingCheck) {
+ enableCountrySpecificEncodings();
+ }
// fast path for common case where no national language shift tables are enabled
if (sEnabledSingleShiftTables.length + sEnabledLockingShiftTables.length == 0) {
TextEncodingDetails ted = new TextEncodingDetails();
@@ -989,6 +993,7 @@ public class GsmAlphabet {
*/
static synchronized void setEnabledSingleShiftTables(int[] tables) {
sEnabledSingleShiftTables = tables;
+ sDisableCountryEncodingCheck = true;
if (tables.length > 0) {
sHighestEnabledSingleShiftCode = tables[tables.length - 1];
@@ -1006,6 +1011,7 @@ public class GsmAlphabet {
*/
static synchronized void setEnabledLockingShiftTables(int[] tables) {
sEnabledLockingShiftTables = tables;
+ sDisableCountryEncodingCheck = true;
}
/**
@@ -1030,6 +1036,24 @@ public class GsmAlphabet {
return sEnabledLockingShiftTables;
}
+ /**
+ * Enable country-specific language tables from MCC-specific overlays.
+ * @context the context to use to get the TelephonyManager
+ */
+ private static void enableCountrySpecificEncodings() {
+ Resources r = Resources.getSystem();
+ // See comments in frameworks/base/core/res/res/values/config.xml for allowed values
+ sEnabledSingleShiftTables = r.getIntArray(R.array.config_sms_enabled_single_shift_tables);
+ sEnabledLockingShiftTables = r.getIntArray(R.array.config_sms_enabled_locking_shift_tables);
+
+ if (sEnabledSingleShiftTables.length > 0) {
+ sHighestEnabledSingleShiftCode =
+ sEnabledSingleShiftTables[sEnabledSingleShiftTables.length-1];
+ } else {
+ sHighestEnabledSingleShiftCode = 0;
+ }
+ }
+
/** Reverse mapping from Unicode characters to indexes into language tables. */
private static final SparseIntArray[] sCharsToGsmTables;
@@ -1045,6 +1069,9 @@ public class GsmAlphabet {
/** Highest language code to include in array of single shift counters. */
private static int sHighestEnabledSingleShiftCode;
+ /** Flag to bypass check for country-specific overlays (for test cases only). */
+ private static boolean sDisableCountryEncodingCheck = false;
+
/**
* Septet counter for a specific locking shift table and all of
* the single shift tables that it can be paired with.
@@ -1408,10 +1435,7 @@ public class GsmAlphabet {
};
static {
- Resources r = Resources.getSystem();
- // See comments in frameworks/base/core/res/res/values/config.xml for allowed values
- sEnabledSingleShiftTables = r.getIntArray(R.array.config_sms_enabled_single_shift_tables);
- sEnabledLockingShiftTables = r.getIntArray(R.array.config_sms_enabled_locking_shift_tables);
+ enableCountrySpecificEncodings();
int numTables = sLanguageTables.length;
int numShiftTables = sLanguageShiftTables.length;
if (numTables != numShiftTables) {
@@ -1419,13 +1443,6 @@ public class GsmAlphabet {
" != shift tables array length " + numShiftTables);
}
- if (sEnabledSingleShiftTables.length > 0) {
- sHighestEnabledSingleShiftCode =
- sEnabledSingleShiftTables[sEnabledSingleShiftTables.length-1];
- } else {
- sHighestEnabledSingleShiftCode = 0;
- }
-
sCharsToGsmTables = new SparseIntArray[numTables];
for (int i = 0; i < numTables; i++) {
String table = sLanguageTables[i];