Avoid Resources$NotFoundException

bug: 6410653
Change-Id: I4263632e76b44abf8ecd9114a9eb185ad39201fd
This commit is contained in:
Ken Wakasa 2012-04-28 03:24:05 +09:00
parent 7570954a18
commit 0ab1c664c1
2 changed files with 6 additions and 2 deletions

View file

@ -66,6 +66,7 @@ public class ImfUtils {
public static boolean checkIfSubtypeBelongsToThisIme(Context context, InputMethodSubtype ims) { public static boolean checkIfSubtypeBelongsToThisIme(Context context, InputMethodSubtype ims) {
final InputMethodInfo myImi = getInputMethodInfoOfThisIme(context); final InputMethodInfo myImi = getInputMethodInfoOfThisIme(context);
final InputMethodManager imm = getInputMethodManager(context); final InputMethodManager imm = getInputMethodManager(context);
// TODO: Cache all subtypes of this IME for optimization
final List<InputMethodSubtype> subtypes = imm.getEnabledInputMethodSubtypeList(myImi, true); final List<InputMethodSubtype> subtypes = imm.getEnabledInputMethodSubtypeList(myImi, true);
for (final InputMethodSubtype subtype : subtypes) { for (final InputMethodSubtype subtype : subtypes) {
if (subtype.equals(ims)) { if (subtype.equals(ims)) {

View file

@ -33,11 +33,10 @@ public class SubtypeLocale {
// Special language code to represent "no language". // Special language code to represent "no language".
public static final String NO_LANGUAGE = "zz"; public static final String NO_LANGUAGE = "zz";
public static final String QWERTY = "qwerty"; public static final String QWERTY = "qwerty";
public static final int UNKNOWN_KEYBOARD_LAYOUT = R.string.subtype_generic; public static final int UNKNOWN_KEYBOARD_LAYOUT = R.string.subtype_generic;
private static Context sContext;
private static String[] sPredefinedKeyboardLayoutSet; private static String[] sPredefinedKeyboardLayoutSet;
// Keyboard layout to its display name map. // Keyboard layout to its display name map.
private static final HashMap<String, String> sKeyboardKayoutToDisplayNameMap = private static final HashMap<String, String> sKeyboardKayoutToDisplayNameMap =
@ -58,6 +57,7 @@ public class SubtypeLocale {
} }
public static void init(Context context) { public static void init(Context context) {
sContext = context;
final Resources res = context.getResources(); final Resources res = context.getResources();
final String[] predefinedLayoutSet = res.getStringArray(R.array.predefined_layouts); final String[] predefinedLayoutSet = res.getStringArray(R.array.predefined_layouts);
@ -128,6 +128,9 @@ public class SubtypeLocale {
// zz azerty T No language (AZERTY) // zz azerty T No language (AZERTY)
public static String getSubtypeDisplayName(InputMethodSubtype subtype, Resources res) { 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()); final String language = getSubtypeLocaleDisplayName(subtype.getLocale());
return res.getString(subtype.getNameResId(), language); return res.getString(subtype.getNameResId(), language);
} }