From 0ab1c664c138b3bc10730c89b2d8efdacee6b15b Mon Sep 17 00:00:00 2001 From: Ken Wakasa Date: Sat, 28 Apr 2012 03:24:05 +0900 Subject: [PATCH] Avoid Resources$NotFoundException bug: 6410653 Change-Id: I4263632e76b44abf8ecd9114a9eb185ad39201fd --- java/src/com/android/inputmethod/latin/ImfUtils.java | 1 + java/src/com/android/inputmethod/latin/SubtypeLocale.java | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/java/src/com/android/inputmethod/latin/ImfUtils.java b/java/src/com/android/inputmethod/latin/ImfUtils.java index 4633b82f5..af46a02c0 100644 --- a/java/src/com/android/inputmethod/latin/ImfUtils.java +++ b/java/src/com/android/inputmethod/latin/ImfUtils.java @@ -66,6 +66,7 @@ public class ImfUtils { public static boolean checkIfSubtypeBelongsToThisIme(Context context, InputMethodSubtype ims) { final InputMethodInfo myImi = getInputMethodInfoOfThisIme(context); final InputMethodManager imm = getInputMethodManager(context); + // TODO: Cache all subtypes of this IME for optimization final List subtypes = imm.getEnabledInputMethodSubtypeList(myImi, true); for (final InputMethodSubtype subtype : subtypes) { if (subtype.equals(ims)) { diff --git a/java/src/com/android/inputmethod/latin/SubtypeLocale.java b/java/src/com/android/inputmethod/latin/SubtypeLocale.java index d10c42ccd..9f89f9ee1 100644 --- a/java/src/com/android/inputmethod/latin/SubtypeLocale.java +++ b/java/src/com/android/inputmethod/latin/SubtypeLocale.java @@ -33,11 +33,10 @@ public class SubtypeLocale { // Special language code to represent "no language". public static final String NO_LANGUAGE = "zz"; - public static final String QWERTY = "qwerty"; - public static final int UNKNOWN_KEYBOARD_LAYOUT = R.string.subtype_generic; + private static Context sContext; private static String[] sPredefinedKeyboardLayoutSet; // Keyboard layout to its display name map. private static final HashMap sKeyboardKayoutToDisplayNameMap = @@ -58,6 +57,7 @@ public class SubtypeLocale { } public static void init(Context context) { + sContext = context; final Resources res = context.getResources(); final String[] predefinedLayoutSet = res.getStringArray(R.array.predefined_layouts); @@ -128,6 +128,9 @@ public class SubtypeLocale { // zz azerty T No language (AZERTY) public static String getSubtypeDisplayName(InputMethodSubtype subtype, Resources res) { + // TODO: Remove this check when InputMethodManager.getLastInputMethodSubtype is + // fixed. + if (!ImfUtils.checkIfSubtypeBelongsToThisIme(sContext, subtype)) return ""; final String language = getSubtypeLocaleDisplayName(subtype.getLocale()); return res.getString(subtype.getNameResId(), language); }